使用 iFrame 似乎不是最佳选择,尤其是当存在许多不同的轻量级和简单框架时。
JqueryMobile 有它自己的路由器。我不喜欢它 - 使用哈希标签它需要具有所需哈希的页面在 DOM 中。当然,可以动态加载页面,但无论如何您都需要创建新页面,将它们添加到页面容器等。这种处理页面的方式不适合我,而且还会使 DOM 过载。
还可以使用 JQM 使用 Jquery 模板——它们允许存储页面或不同的 HTML 代码,稍后可以使用传递的数据对其进行解析。这些模板和解析机制在我看来非常简单易用。但是如果需要解析复杂数量的数据,它们就不适合了。也不支持部分(如在 ASP.NET MVC 中)。这意味着,您不能将页眉和页脚仅存储在一个文件中并将它们作为每个页面的部分加载。您必须为每一页复制它。
这个框架的其余功能很棒。许多控件、主题等。它似乎是 UI 创建的领导者 - 毫无疑问。我唯一不喜欢的——JQM 页面转换。
现在关于骨干。这是一个使用 MVC 模式创建应用程序的强大而简单的框架。实际上,没有 JS 框架允许创建真正的 MVC。但基本情况是正确的。模型、视图和控制器(路由器)。在 GitHub 上简单地创建新路线、良好的文档和大量示例。使用视图和模型的强大机制 - 他们的站点将显示所有功能。
我提议使用 Backbone + JQM。但在这种情况下,您必须禁用其中一个路由器以避免这些框架之间的冲突。只有一个人应该留下。
关于分页。无需将所有可用页面存储在 DOM 中。您只能创建一个带有内容元素的 JQM 页面并动态更新它。将 html 存储在模板中,从服务中获取数据,解析模板并更新内容元素。Backbone 有一个依赖项——下划线。乍一看,我不想使用 Backbone。但 underscore 是一个强大的框架,具有许多有用的特性。其中之一是 - 模板。强大的解析机制 - 支持循环,js函数,在模板中创建变量等。也不支持部分 - 但你不需要它,因为不需要一直创建新页面。
当我的应用程序只有几页时 - 我加载了所有 js 文件(框架、帮助程序、服务调用程序、视图、模型等)并将下划线模板存储在我的 html 页面上。但是支持这样的代码是一件可怕的事情。HTML 页面变得巨大。RequireJS 框架可以解决这个问题。它不仅可以加载 JS 文件,还可以加载文本模板(使用文本插件)。在这种情况下,所有代码都是模块化的。它有很多样本,有很好的文档记录,所以看看它是如何工作的没有问题。顺便说一句,Backbone 的最新版本正式不支持 AMD。但是仍然可以使用 RequireJS 加载它。
还要考虑滚动您的内容。我不会写很多关于它的。看看 iScroll 框架。
所以,PhoneGap + Backbone + JQM + RequireJS = 成功 :)