ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 构建大型jQuery Mobile网络应用程序:使用iFrame作为页面? Backbone,Spine,Underscore和其他框架?

2019-06-30 07:23:26  阅读:226  来源: 互联网

标签:jquery javascript backbone-js cordova jquery-mobile


我们使用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架构存在任何明显问题,除了它意味着构建专有功能?

解决方法:

使用iFrames似乎不是最佳的,特别是当存在许多不同的轻量级和简单框架时.

JqueryMobile拥有自己的路由器.我不喜欢它 – 使用哈希标签它需要带有所需哈希的页面在DOM中.当然,可以动态加载页面,但无论如何你都需要创建新页面,将它们添加到页面容器等.这种处理页面的方式不适合我,也会使DOM过载.

使用JQM还可以使用Jquery模板 – 它们允许存储页面或不同的HTML代码,以后可以使用传递的数据进行解析.在我看来,这些模板和解析机制非常简单易用.但如果需要解析复杂数据,则它们不适用.也不支持partials(比如在ASP.NET MVC中).这意味着,您不能只在一个文件中存储页眉和页脚,并将它们作为每个页面的部分加载.您必须为每个页面复制它.

这个框架的其余功能很棒.很多控件,主题等等.它似乎是UI创建的领导者 – 毫无疑问.我唯一不喜欢的东西–JQM页面转换.

现在关于Backbone.这是一个使用MVC模式创建应用程序的强大而简单的框架.实际上,没有JS框架允许创建真正的MVC.但基础是真的.模型,视图和控制器(路由器).在GitHub上简单创建新路由,良好的文档和大量示例.强大的机制来处理视图和模型 – 他们的网站将显示所有功能.

我提议使用Backbone JQM.但在这种情况下,您必须禁用其中一个路由器以避免这些框架之间的冲突.只有一个应该留下来.

关于分页.无需在DOM中存储所有可用页面.您只能使用content元素创建一个JQM页面并动态更新它.将html存储在模板中,从服务中获取数据,解析模板和更新内容元素.
Backbone有一个依赖 – 下划线.乍一看,我不想因此而使用Backbone.但下划线是一个功能强大的框架,具有许多有用的功能.其中一个是 – 模板化.用于解析的强大解析机制 – 支持循环,js函数,在模板中创建变量等.也不支持部分 – 但您不需要它,因为不需要一直创建新页面.

当我的应用只有几页时 – 我在我的html页面上加载了所有js文件(框架,帮助器,服务调用者,视图,模型等)和存储的下划线模板.但支持这样的代码是一种恐怖. HTML页面变得巨大.
RequireJS框架可以解决这个问题.它不仅可以加载JS文件,还可以加载文本模板(使用文本插件).这种情况下的所有代码都是模块化的.它有大量的样本,因此没有问题,看它是如何工作的.
顺便说一句,Backbone的最新版本正式不支持AMD.但仍然可以使用RequireJS加载它.

还要考虑滚动内容.我不会写很多关于它的.只需看看iScroll框架.

所以,PhoneGap Backbone JQM RequireJS =成功:)

标签:jquery,javascript,backbone-js,cordova,jquery-mobile
来源: https://codeday.me/bug/20190630/1334210.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有