新足迹

 找回密码
 注册

精华好帖回顾

· 自己制作烤鸭(上做法了30# (2007-11-30) 云淡风轻 · 2016日本四国圆梦,仓敷姬路城崎奈良岚山京都东京 (全文完) (2016-4-29) violinlearner
· 透明的海,柔情的珊瑚,追魂的鱼- 大溪地印象 (加了几张照片) (2009-4-17) hilltop-bear · 【三刀厨侠争霸赛】买菜便宜的好处 (2008-9-29) big_beast
Advertisement
Advertisement
查看: 2183|回复: 15

【转】JavaScript宝座:七大框架AngularJS、Backbone、Batman、CanJS、Ember、Meteor、Knockout、Spine论 [复制链接]

发表于 2013-2-26 22:42 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
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,在客户端应用这一思想也永远是正确的。
(完)

相关阅读:




评分

参与人数 2积分 +8 收起 理由
kr2000 + 4 感谢分享
realfenglin + 4 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2013-2-26 22:43 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
对比的不错,推荐给用得上的同学。。

发表于 2013-2-27 09:47 |显示全部楼层
此文章由 IsDonIsGood 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 IsDonIsGood 所有!转贴必须注明作者、出处和本声明,并保持内容完整
为神马木有Jquery?难道哥又out了么~~~~~
Backbone.js听过,Angular.js刚刚听过,knockout.js用过一丢丢,别滴听都木有听过啊

发表于 2013-2-27 10:16 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
kao,只用过Jquery.

发表于 2013-2-27 10:47 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
IsDonIsGood 发表于 2013-2-27 09:47
为神马木有Jquery?难道哥又out了么~~~~~
Backbone.js听过,Angular.js刚刚听过,knockout.js用过一丢丢, ...

都是构建富客户端,移动端单页程序,或者大型js程序用的。

发表于 2013-2-27 22:00 |显示全部楼层
此文章由 pureboy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pureboy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
还有SENCH TOUCH是移动版的
Advertisement
Advertisement

发表于 2013-2-27 22:21 |显示全部楼层
此文章由 飞翔翼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 飞翔翼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看了这个视频,不得不承认自己已经撤单OUT了

发表于 2013-2-28 11:24 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
还是不太明白为什么把MVC搬到前台

看了canjs的视频,觉得是“自己做自己爽”的产品。。。

我out了。。。

特殊贡献奖章

发表于 2013-2-28 11:31 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这些都是很新的东西,而且功能重复
都熟悉才怪了

看介绍,我对Meteor比较感兴趣

发表于 2013-2-28 12:00 |显示全部楼层
此文章由 brahmasky 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 brahmasky 所有!转贴必须注明作者、出处和本声明,并保持内容完整
看了一下Meteor,感觉相当的酷,不过这个安全性咋保证呢

发表于 2013-2-28 12:37 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 鱼羊鲜 于 2013-2-28 12:39 编辑
飞翔翼 发表于 2013-2-27 22:21
看了这个视频,不得不承认自己已经撤单OUT了


---哦,那个视频啊
Advertisement
Advertisement

发表于 2013-2-28 12:39 |显示全部楼层
此文章由 zn7726 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 zn7726 所有!转贴必须注明作者、出处和本声明,并保持内容完整
为啥子把JS搞的这么复杂 ...

发表于 2013-2-28 12:48 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
zn7726 发表于 2013-2-28 12:39
为啥子把JS搞的这么复杂 ...

js想要脱离吊丝行列

发表于 2013-2-28 15:30 |显示全部楼层
此文章由 porcorosso 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 porcorosso 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我也觉得meteor是潜力股啊

本来想下来玩的,才发现linux才能走

发表于 2013-2-28 21:37 |显示全部楼层
此文章由 Dan.and.Andy 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Dan.and.Andy 所有!转贴必须注明作者、出处和本声明,并保持内容完整
zn7726 发表于 2013-2-28 12:39
为啥子把JS搞的这么复杂 ...

不是搞复杂,是搞结构化。否则这一个那一个的functions, 这一个那一个的events,一大堆的jQuery selectors, 再碰到无聊的人搞几个别名,single page app 会很难看,代码不优雅,维护也很痛苦。

真正痛苦的是js 的世界里没有一统天下傲视群雄的东西,都是小作坊级,所以选择太多,费的力气比较大。
头像被屏蔽

禁止访问

发表于 2013-2-28 22:59 |显示全部楼层
此文章由 atransformer 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 atransformer 所有!转贴必须注明作者、出处和本声明,并保持内容完整
呵呵,五年后在来看,还能剩几个??
Advertisement
Advertisement

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部