加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

JavaScript 客户端 MVC 框架调查

发布时间:2018-04-25 15:30:45 所属栏目:编程 来源:伯乐在线
导读:15 年前,很多人都行使 Perl 和 ColdFusion 之类的器材构建网站。我们常常编写可以在页面顶部查询数据库的剧本,对数据应用须要的转换,以及在统一个剧本底部表现数据。这类架构得当于向网站添加简朴的 Contact us 表单。然而,跟着应用措施变得越发伟大,

假如您的方针是建设一种客户端体验,而对处事器状态的更新是次要的,那么 Spine.js 也许是一种更好的选择。假如如故行使处事器来搜查状态变革的有用性则 Backbone.js 也许更得当。Spine.js 提供了相应性更好的 UI。可是,假如表现乐成删除某个元素,只是让处事器发送一个相应,不应承您删除该项,由于该项正在被其他人行使,那么会产生什么?针对这个题目存在一些应急方案,可是凡是来讲 Spine.js 越发适实用户操纵自有(而非共享)数据。Spine.js 的一个常见用例就是购物车,个中全部验证都可以在客户端处理赏罚。

Knockout

人们也许会争论今朝为止接头的这些器材是否是本来意义上的真正的 MVC 框架。Knockout 明晰实现了模子-视图-视图-模子 (MVVM),而不是经典的 MVC。可是,不要因此而故障到您的决定拟定。在选择框架时,更重要的是查察所提供的成果而非首字母缩略词或分类。

Knockout.js 在认识 MVVM 模子的 Microsoft .NET 开拓职员之间出格受接待。对付首要题目是将模子状态通过声明的方法绑定到视图用例,Knockout.js 长短常好的选择。Knockout.js 对付前面提到的示例待服务项应用措施长短常抱负的选择,该应用措施的主待服务项列表的子集都有本身的视图,在删除某个待服务项后必要更新全部的列表。

在 Knockout.js 中,您将建设模子、视图模子和视图。与在 Spine.js 和 Backbone.js 中一样,认真处理赏罚营业逻辑、验证和与长途处事器交互的 Ajax(假设您不只仅是建设一个当地应用措施)。视图模子代码认真保存和操纵模子数据。譬喻一个视图模子也许包括添加、编辑以及从列表中删除内容项的要领。视图模子很是贴近于传统的 MVC 架构中的节制器。视图就是一些模板,包括将信息泛起到屏幕的标志。在 Knockout.js 中,这些可以通过声明的方法绑定到视图模子(利便入门)。一些学员可以在一个小时内把握并行使 Knockout,并可在三个小时内构建不凡 (non-trivial) 应用措施。

一样平常来讲,Knockout.js 较量得当较小、较简朴的项目。人们每每将 Backbone.js 或 Spine.js 用于更大、更伟大的项目。也就是说,有履历的 Knockout.js 开拓职员可以建设很是伟大、同时又易于维护的应用措施。假如思量行使 Knockout.js,您也该当思量 Angular.js 和 Sammy.js(拜见 参考资料),后两者是两种相对轻量级、易于启动的框架。

Batman.js

Batman.js 是一种风趣的新框架,由 JSConf 在 2011 年推出,可是又颠末尾几个月的时刻才气够通过下载获取。Batman.js 已经开始受到一些喜好并获得开拓 MVC 应用措施的措施员的存眷。外貌上看,Batman 在易于入门、支持视图声明绑定方面与 Knockout.js 相同。Batman.js 提供了一些其他成果,包罗可选的全栈 (full-stack) 框架,用于自动代码天生器、构建器材乃至后端 Node.js 处事器代码,可以实现您的处事器端 API。

和 Knockout.js 一样,Batman.js 也行使视图绑定。清单 3展示了一些样例视图代码。

清单 3. Batman.js 中的视图代码示例

<ul id=“items">

<li data-foreach-todo=“Todo.all” data-mixin=“animation”>

<input type=“checkbox” data-bind=“todo.isDone” data-event-change=“todo.save” />

<label data-bind=“todo.body” data-addclass-done=“todo.isDone”

data-mixin=“editable”></label>

<a data-event-click=“todo.destroy">delete</a>

</li>

<li><span data-bind=“Todo.all.length”></span>

<span data-bind=“‘item’ | pluralize Todo.all.length”></span></li>

</ul>

清单 3中的代码是有用的 HTML5,包括一些特另外属性,供 Batman 绑定命据和变乱。在 Batman.js 中,您的应用措施包括模子、视图和节制器。模子支持验证成果,可以或许实现生命周期变乱,包罗一个内置的恒等映射 (identity map),而且可以被奉告(主动记录样式)怎样僵持行使 、Batman.RestStorageBatman.RailsStorage 或自定实现。视图为一些 JavaScript 类,泛起用纯 HTML 编写的模板,尚有一些用 data-* 属性绑定模子数据并触发变乱处理赏罚器的构件。节制器为一些永世工具,处理赏罚来自视图的变乱,会见模子数据,并泛起响应的视图。

选择一种 JavaScript 框架

假如您正在从事一个恒久的大项目,那么相识 Backbone.js 或 Spine.js 很有须要,由于它们得到了普及的回收,可以办理您也许碰着的题目。然而,纵然有了这些项目,您要大白您不是有须要行使一个成熟的处事器端 MVC 框架,而是还需继承编写基本架构代码。

实行行使在视图顶用了声明式绑定的框架将很是有须要。此类框架具有与 Backbone.js 之类的项目差异的优弱点。假如思量行使声明式视图绑定,那么花些时刻研究一下更新的 Batman.js 框架提供的特殊成果。固然 Batman.js 不像其他框架那么风行,但它正在快速成长,并且提供了比平凡客户端 MVC 框架更富厚的特征。

在差异框架中举办原型化,感觉一下这些框架的用法,这样做很是有须要。出格是对付客户端 MVC 框架来说,原型化是从差异选项中举办选择的最快速、最有用的要领之一。一种要领是让每个团队成员花一到两天的时刻,行使差异的框架举办原型化,然后举办回首并接头功效。最坏的环境是,假如您尚有一对框架必要从中举办选择,那么再特殊花一天阁下的时刻构建二者的观念,直到选出最得当您的用例的框架。

思量机动性。细心思量您可以做哪些事变来低落对框架的依靠性,这对付很多框架来说是一个难题的使命。为未来 12 到 18 个月内迁徙到另一个框架拟定一个备份方案,以防您发明需求和所选的框架没有凭证预期举办。

竣事语

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读