BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

12种JavaScript MVC框架之比较

| 作者 侯伯薇 关注 0 他的粉丝 发布于 2012年5月29日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

Gordon L. Hempton是西雅图的一位黑客和设计师,他花费了几个月的时间研究和比较了12种流行的JavaScript MVC框架,并在博客中总结了每种框架的优缺点,最终的结果是,Ember.js胜出。

此次比较针对的特性标准有四种,分别是:

  • UI绑定(UI Bindings)
  • 复合视图(Composed Views)
  • Web表现层(Web Presentation Layer)
  • 与其他框架良好协作(Plays Nicely with Others)

对于各种JavaScript MVC框架,Gordon都总结了优缺点:

  1. Backbone.js——优点:强大的社区,强劲的势头;缺点:抽象较弱,很多功能亟待增加。
  2. SproutCore——优点:对绑定的支持,可靠的社区,大量特性;缺点:过度规范,难以和不需要的特性解耦。
  3. Sammy.js——优点:易于学习,更容易和现存的服务端应用程序整合;缺点:过于简单,无法应用于大型应用程序中。
  4. Spine.js——优点:轻量级,文档很完备;缺点:它的核心概念“spine”是异步的用户界面,这意味着理想状况用户界面永远不会发生堵塞,而这个基础有缺陷。
  5. Cappuccino——优点:大型深思熟虑后的框架,良好的社区,很棒的继承模型;缺点:由iOS开发者创建,使用JavaScript模拟Objective-C。
  6. Knockout.js——优点:对绑定的支持,完备的文档和教程;缺点:绑定语法拙劣,缺少统一的视图组件层级关系。
  7. Javascript MVC——优点:可靠的社区;缺点:基于字符串的继承模型很差,控制器与视图关系过密而缺少绑定。
  8. GWT(Google Web Toolkit)——优点:全面的框架,良好的社区,可靠的基于Java的组件继承模型;缺点:可能无法经受时间的考验,另外,Java在客户端上的抽象有些笨拙。
  9. Google Closure——优点:很好的基于组件的UI组合系统。缺点:缺少UI绑定支持。
  10. Ember.js——优点:很丰富的模板系统,拥有复合视图和UI绑定;缺点:相对较新,文档不够完备。
  11. Angular.js——优点:对模板范围和控制器设计有很好的考虑,拥有依赖注入系统,支持丰富的UI绑定语法。缺点:代码的模块性不强,视图的模块化也不够。
  12. Batman.js——优点:代码清晰,绑定、持久化的方法简单;缺点:使用了单例控制器。

经过对以上各种Javascript MVC框架特性的比较,Gordon认为只有Ember.js能够完全满足他的要求,从而成为他最终选用的框架。

你是否也使用过某些JavaScript MVC框架呢?欢迎参与讨论。

关注IT趋势,承载前沿、深入、有温度的内容。感兴趣的读者可以搜索ID:laocuixiabian,或者扫描下方二维码加关注。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

node.js 没有? by chen chen

怎么没有说这些框架: extjs , node.js

Re: node.js 没有? by wang yi

extjs, node.js是用来MVC的?

knockout很好 by Ma Devis

我觉得knockout很好,请作者告诉我个绑定语法不拙劣的js,谢谢。

Re: knockout很好 by 侯 伯薇

建议试试Gordon L. Hempton推荐的Ember.js,比较一下,看看区别,:)

一点质疑 by Li Qiang

把GWT归结为JavaScript框架,似乎有些不妥。另外,像ExtJS、ZK、NodeJS等居然没能包含在内,让人怀疑作者的知识面不够广。

Re: node.js 没有? by yi yang

node.js是一个运行环境,不是MVC框架,概念错误哈

Re: knockout很好 by withyou gakaki

你看看 cnblogs 的大叔 写的knockout系列 在看看 peepcode用coffeescript写的backbone系列就知道他说语法拙劣了
确实不方便 又长

extjs的mvc也不错的。。。。。可以去github看看有个源码叫做 todo mvc 用了其中说的大部分框架写同一个todolist
github.com/addyosmani/todomvc
有趣的是win8 的 html5开发模型也是类似knockout和backbonejs的这种mvc模型
不过也是废话型的 和knockout一个样

Re: knockout很好 by withyou gakaki

其实现在coffeescript很火 特别是组合nodejs之后
还有js的 promise对象 deffered对象

ioc最近extjs框架自己出了个

zk jqui那些事ui库

这里说的是mvc框架

也就是客户端 有model层的 router是controller
其实这些extjs早在3系就有了 sencha touch2 里已经全面 mvc华了 还出了个强大的sencha designer

Re: 一点质疑 by 刘 锦龙

这几个好像不是MVC js框架吧~像EXTJS不是一个ui框架吗?

Re: 一点质疑 by changhai lai

ext4的guide就有介绍他的mvc结构了,但我实际用下来觉得在稍大型应用里,因为ext本身各种组件以及JS在OO上的支持,导致灵活性不够好。

最佳实践之 Javascript MVC by 许 辉辉

个人对 Javascript MVC 的理解: xhh.me/2012/06/best-practices-js-mvc.html

Re: 一点质疑 by Deng Jack

当你开喷作者知识面前可以尝试做做功课先的,不是吗?

easyUI和bootstrap 没有!! by paty chen

在国内挺有名的,但是要是也列如其中就好了。

Re: 一点质疑 by x malaikuangren

有个概念要清楚,libaray 和 framework不是一个概念。说好象说jquery是一个框架,显然是不对的。framework应该在libaray之上。就好象,jqlite成为了angularjs的一部分。而且,这里特指MVC框架。

Re: 一点质疑 by Yang Bob

GWT是Js框架,只是它的开发过程是java,最终还是以js方式执行。Extjs,ZK不算框架应该算组件库。NODEJS更不是框架了。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

15 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT