Advertisement
Advertisement

新足迹

 找回密码
 注册
新足迹 › 门户 › AI 相关› 查看内容

【转】JavaScript宝座:七大框架AngularJS、Backbone、Batman、CanJS、Ember、Meteor、Knockout、Spine论

2013-2-26 21:42| 发布者: 鱼羊鲜 | 查看: 2453| 原文链接

JavaScript宝座:七大框架论剑


原文链接:Rich JavaScript Applications – the Seven Frameworks 作者:Steven Sanderson
翻译:@李松峰 感谢 @温谦-此昵称太受欢迎 老师推荐。
技术门派概览
以下是所有JavaScript库/框架的基本技术细节。
Backbone
  • Who: Jeremy Ashkenas和DocumentCloud。
  • What:
    + 用JavaScript实现模型-视图,MIT许可。
    + 只有一个文件,1000行代码,在所有库中最小!
    + 功能极其专一,只提供REST可持久模型及简单路由和回调(以便你知道何时渲染视图,但视图渲染机制由你自己选择)。
    + 名气最大,很多大牌站点都在用(也许是因为它最小,容易部署)。
  • Why:
    + 非常小,使用它之前,你完全可以通读并理解它的源代码。
    + 不会影响你的服务器架构或文件组织方式。可以在页面的某一部分内运行——不需要控制整个页面。
    + Jeremy好像进入了一种禅宗所谓的入定的状态,对一切都能坦然接受。他就像一个大人,看着一群孩子在那里辩论。
  • Where: GitHub 及 自有站点。
  • When: 至今已诞生近两年了。
Meteor
  • Who: Meteor 开发团队(他们刚募集到1120万美元投资,因此可以全职开发)。
  • What:
    + 前瞻性极强的一个框架,想不出有谁那么激进过(也许Derby算一个)。
    + 将一个服务器端运行时环境(用Node+Mongo搭建)和一个客户端运行时环境衔接起来,让你的代码在两端都能运行,还包含数据库。利用WebSockets实现所有客户端和服务器之间的同步。
    + 在修改代码时就“实时部署”——客户端运行时可以即时更新而不丢失状态。
    + 可以看看这个视频,对它的认识就会更全面。
    + 跟会上与我有过交流的所有人一样,我也衷心希望这个框架获得成功——Web开发就需要这种激进的改革才能真正进步。
  • Why: 你实在觉得做常规Web开发太无聊了,想找点刺激。
  • Where: GitHub 和 自有站点。
  • When: 诞生时间不长;除了其核心团队在用,不知道还有没有其他站点实际在用Meteor。不过,这个团队真是在严肃地做着一件前无古人的事。
Ember
  • Who: Yehuda Katz (之前开发过jQuery和Rails)、Ember团队和Yehuda的公司Tilde。
  • What:
    + 构建“超级Web应用”所需的一切,MIT许可。
    + 功能最多,体积最大。
    + 融入了很多设计理念,涉及如何分解并对页面进行层次控制,以及如何利用一个状态机驱动的系统联结各个层次。
    + 正在开发一个功能非常完善的数据访问库(Ember.Data)。
    + 要在运行时控制整个页面,因此不适合开发大页面上的“富应用区”。
    + 对文件、URL等都有相当严格的一套约束,不过要是不喜欢,你可以重写,只要你知道怎么做就OK。
    + 设计灵感来自Rails和Cocoa。
    + 工具:为Rails提供项目模板(但如果你手工编写代码,也可以使用其他服务器端平台)。
  • Why: 常见的问题应该有通用的解决方案——Ember提供了所有通用解决方案。
  • Where: GitHub 和 自有站点。
  • When: 尚未发布1.0版,但也快了。然后,API基本就能稳定下来。
AngularJS
  • Who: Google(他们内部在使用)。
  • What:
    + 用JavaScript实现模型-视图-其他,MIT许可。
    + 基于DOM的模板,具备可观察能力、声明绑定机制,还有准MVVM式的代码风格(他们自己说是Model-View-Whatever)
    + 内置基本URL路由和数据持久化能力
    + 工具:附带一个Chrome调试器插件,让你在调试的时候能够查看模型;还附带一个Jasmine测试框架。
  • Why:
    + 从概念上讲,他们说这个框架相当于一个“填料层”,盖在当前浏览器上,以实现未来的浏览器将可能原生具备的能力(即声明绑定和可观察能力)。因此,我们现在就应该着手这么来写代码了。
    + 对服务器架构或文件组织方式没有影响。可以用在页面的某一小部分中——不需要控制整个页面。
  • Where: GitHub 和 自有站点。
  • When: 成品级框架,Google已经搞出来有一段时间了。
Knockout
  • Who: Knockout 团队和社区(核心团队目前有三个人,包括我)。
  • What:
    + 用JavaScript实现模型-视图-视图模型(MVVM,Model-View-ViewModel),MIT许可。
    + 功能集中在富用户界面元素:基于DOM的声明绑定模板,可观察的模型加自动依赖检测。
    + 没有限定URL路由或数据访问——可组合任意第三方库(例如,用Sammy.js做路由,用纯Ajax实现存储)。
    + 在降低使用门槛方面下了很大工夫,提供详尽的文档和交互式示例。
  • Why:
    + 只做好一件事(UI),向后兼容到IE6。
    + 对服务器架构或文件组织方式没有影响。可以用在页面的某一小部分中——不需要控制整个页面。
  • Where: GitHub 和 自有站点。
  • When: 到现在已经正式发布近两年了。
Spine
  • Who: Alex MacCaw。
  • What:
    + 用JavaScript实现MVC,MIT许可证。
    + 由最早为O'Reilly一本书写的示例代码发展而来,已成为一个OSS(Open Source Software,开源软件)项目。
    + 是Backbone的一个衍生版(看名字就知道3)。
  • Why: 你喜欢Backbone,但又想要点不一样的东西。
  • Where: GitHub 和 自有站点
  • When: v1.0.0已经发布。
3 Backbone和Spine都是“脊椎”的意思。——译者注
Batman
  • Who: Shopify (一家电子商务平台公司)的团队。
  • What:
    + 在JavaScript中实现MVC,几乎是专门为Rails+CoffeeScript开发者定制的,MIT许可。
    + 是所有框架中强制性规定最多的。你必须遵守其约定(例如,怎么组织文件和URL)。否则,就像他们幻灯片中说的,“你还是用其他框架吧”。
    + 非常完善的框架,具有相当丰富的模型、视图和控制器,还有路由。当然,还有可观察机制。
    + 基于DOM的模板。
  • Why: 如果你使用Rails和CoffeeScript,你找到亲人了。
  • Where: GitHub 和 自有站点。
  • When: 当前版本 0.9,几个月内将发布1.0版。
CanJS
  • Who: Bitovi(一家JavaScript咨询/培训公司)的团队。
  • What:
    + 用JavaScript实现MVC,MIT许可。
    + REST可持久模型、基本的路由、基于字符串的模板。
    + 知名度不高(我也是上周才听说它的),但它的前身却是原来的JavaScriptMVC项目。
  • Why: 旨在集上述各技术门派之所长,提供与它们类似的功能,同时又保持体积小巧。
  • Where: GitHub 和 自有站点。
  • When: 1.0 版已经发布了。
总结
如果你正在考虑选型的问题,想知道上面这些框架/库中的哪一个最适合你的新项目,那我建议你重点关注以下两点。
  • 功能范围。你想让这个框架或库为你做多少事儿?你的项目是从头做起,因而需要一个能贯穿始终的完整的各项功能齐备的架构吗?或者,你其实更喜欢自己来挑选模式和库?对不同的项目,不同的团队,任何选择都有价值,都是正确的。
  • 设计美学。你看过它们的代码吗,用没用过自己选择的框架构建出了一些小巧的应用?你喜欢这样做吗?不要只看它们的说明或者功能列表就作出选择:那些信息有价值,但不全面。打个比方,如果你置自己主观的编码经验于不顾,那就像在选择小说时只看它有几章几节,或者在找对象时只看其简历或个人描述。
尽管存在分歧,但我认为所有技术门派有一个重大的共性:它们都践行了模型与视图分离的思想。而这个思想早在Web诞生之前就已存在,到现在差不多有20年历史了。这么说吧,就算你只做一个基本的Web应用的UI,在客户端应用这一思想也永远是正确的。
(完)

相关阅读:




Advertisement
Advertisement


Advertisement
Advertisement
返回顶部