4

我们使用 jQuery Mobile 构建了一个 Web 应用程序。它现在有九页,变得非常笨拙。jQuery Mobile 将所有“页面”捆绑到同一个页面中,以模拟原生应用程序的响应能力。

我们考虑将每个页面实现为单独的 iFrame。第一个页面包含每个 iFrame/页面并预加载每个页面。通过在视口中显示适当的页面,页面转换就像 JQM 一样发生。数据通过 iFrame 消息在母版页和子页之间传递。我们认为这可能是有利的,因为:

(1) 不需要额外的框架;

(2) 网络应用程序不会超过 15 个页面/iFrames;和

(3) Web 应用程序将通过本机应用程序容器(即 PhoneGap)而不是移动浏览器访问。

我们也在探索框架。从我们对SO和其他地方的研究来看,Backbone 和 Spine 似乎是构建大型 JavaScript 项目的两个很好的选择。

特别是他们管理 JQM 项目的能力还不是很清楚。

我们正在寻找三件事:

1) 有哪些选项和框架可用于构建大型 JQM 项目(理想情况下或最坏情况下的 MVC,对单一文件的任何改进)?

2) 如果您使用过 Backbone、Spine 或任何其他带有 JQM 的 JS 框架,请分享您喜欢/不喜欢的内容。

3) 除了意味着构建专有功能之外,您是否发现我们的 iFrame 架构有任何明显的问题?

4

3 回答 3

3

使用 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 = 成功 :)

于 2012-04-10T20:11:17.623 回答
0

使用Sencha Touch,并用它替换所有内容。

于 2012-04-10T20:22:23.443 回答
0

15页对我来说似乎并不大。我真的不认为引入另一个框架会让这种规模的网站变得更容易。

我和您有同样的挫败感,但不是将所有内容都放在一个巨大的文件中,而是使用 ajax 页面加载来动态加载页面。

为了避免冲突,我只是小心地为标识符加上页面名称的前缀。这不是什么大问题。

您必须将其复制粘贴到每个文件中,这有点烦人(这使测试变得更加容易,并且允许站点的多个入口点),但我已经能够忍受它。

尽管有缺点,但将页面拆分为 HTML 文件有助于提高“实用性”,尤其是当您在页面上内联 javascript 时。

于 2012-04-11T05:43:29.933 回答