Asp.net mvc 3 asp.net mvc、jquery mobile、phonegap体系结构最佳实践

Asp.net mvc 3 asp.net mvc、jquery mobile、phonegap体系结构最佳实践,asp.net-mvc-3,architecture,jquery-mobile,cordova,mobile-application,Asp.net Mvc 3,Architecture,Jquery Mobile,Cordova,Mobile Application,我正在开发一个使用ASP.NETMVC生成HTML5页面的移动应用程序。HTML5页面将使用jQueryMobile的loadPage调用ASP.NETMVC将页面加载到DOM中。然后,它将使用jQueryMobiles的changePage,根据用户与应用程序的交互,使页面在DOM中处于活动状态。对MVC应用程序的调用将调用不同的Web服务来检索源数据以构建HTML 我们计划在应用程序中使用PhoneGap,以便将完成的应用程序提交给苹果和安卓商店。我的应用程序不需要与设备的本机功能(联系人、

我正在开发一个使用ASP.NETMVC生成HTML5页面的移动应用程序。HTML5页面将使用jQueryMobile的loadPage调用ASP.NETMVC将页面加载到DOM中。然后,它将使用jQueryMobiles的changePage,根据用户与应用程序的交互,使页面在DOM中处于活动状态。对MVC应用程序的调用将调用不同的Web服务来检索源数据以构建HTML

我们计划在应用程序中使用PhoneGap,以便将完成的应用程序提交给苹果和安卓商店。我的应用程序不需要与设备的本机功能(联系人、地理位置等)交互,因为我们不需要与实际设备的操作系统交互(除了对MVC应用程序进行jQuery ajax调用),那么真的需要PhoneGap吗?我上面描述的方法是使web应用在移动设备上可行的适当方法吗

由于我的应用程序是asp.net mvc,并且将托管在我的服务器上,那么会向Android和苹果商店发送什么?这就是PhoneGap发挥作用的地方吗?PhoneGap是否创建了某种提交给Android和苹果商店的可执行文件?然后将此可执行文件下载到客户端设备上?我假设可执行文件将通过URL调用MVC站点来检索应用程序HTML

我看得对吗?感谢您的帮助。

Phonegap(或其他替代品)不是必需的,但对于从HTML/JS/CSS源创建应用程序包非常有用。Phonegap不创建可执行文件(您的IDE会创建),而是Java到JavaScript功能的框架(使您可以从JavaScript运行Java代码)

Phonegap基本上将您的HTML/JS/CSS站点包装在
webview
中,这样您的代码就可以被设备的浏览器解释(有时比正常运行浏览器更为沙盒化,例如iOS-5之前的
webview
实例没有使用Nitro JS引擎,因此它们的运行速度比移动Safari浏览器中的网站慢)

如果您的站点非常简单,不使用任何其他Phonegap功能,但由于它已经被烘焙到Phonegap中,并且设备不必下载Phonegap,那么您可以创建自己的
webview
。您也可以使用Phonegap

Phonegap Build()是一个程序,您可以购买该程序来构建应用程序包并将其提交给Apple/Google/RIM/Windows应用商店。但是,通常您只需使用自己的IDE即可。例如,要创建iOS应用程序,您必须使用新的Apple计算机(您必须拥有最新的OS版本才能构建最新版本的iOS软件包).iOS应用程序包是在XCode中创建的,Eclipse IDE是创建Android应用程序包的常用环境:

我注意到您说您正在使用
$.mobile.loadPage()
将页面加载到DOM中,并使用
$.mobile.changePage()
将用户导航到这些页面。如果您只使用
$.mobile.changePage()
,则它将使用
loadPage()
自动抓取页面要预加载内容,然后检查jQuery Mobile的预取功能:

2014年的更新


我最近使用Cordova 3.5构建了一些应用程序,构建过程非常简单。软件包构建过程现在通过系统控制台进行管理,从安装插件到重新构建应用程序包,一切都更加简单。

不确定我的问题为什么被否决。我一直在做大量的研究rch。我需要一些澄清。我读过很多不同的资源,它们有不同的做事方式。通过我的研究,我想我已经找到了一种方法。我只需要验证我的假设。谢谢你的回答。关于loadPage和changePage,jQueryMobile正在从DOM中删除页面恩,我根据文档导航离开它们。因为页面不再在DOM中,所以changePage失败。因此,当我在页面上着陆时,我使用loadPage将所有可能的页面加载到DOM中(现在可以管理),然后我可以根据需要调用changePage。每个页面都有一个“类型”属性,因此当用户导航到不再需要旧页面的新区域时,我可以删除特定类型的所有页面。是否有更好的方法?如果在
数据角色=“页面”上设置
数据dom cache=“true”
属性
元素,那么当页面被导航离开时,jQuery Mobile将不会删除这些页面。否则,我会确保手动将每个
数据角色=“页面”
元素的
数据url
属性设置为其绝对url,以便在使用时:
$.Mobile.changePage('/about us/default.html'))
,框架将能够将该字符串与页面的
数据url
属性相匹配(如果它已经存在于DOM中)。明白了。谢谢你的提示。我非常关注性能,担心DOM会填满页面。应用程序有不同的部分,所以如果我设置数据DOM cache=“true”,然后我担心DOM会随着时间的推移而填满。因此,我创建了一种方法,其中每个页面都有一个类型属性,该属性的值为它所属的分区的值。因此,当用户转到其他分区时,我可以从旧分区中删除所有页面。这是DOM维护。这种方法可以吗?我不愿意让DOM填满pages。再次感谢您的帮助。这应该很好。管理DOM的大小是个好主意,尤其是在移动设备上。您可以使用Chrome开发工具或Firebug(用于Firefox),或任何用于检查站点DOM序列化大小的开发工具。这将让您很好地了解在任何给定时间点使用了多少内存,以及是否需要进行更多或更少的DOM大小管理。