本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分内容,因为个人对于框架的应用总结和特点比较感兴趣,这里翻译了部分的内容,希望对于大家有帮助,如果你觉得不过瘾,请阅读原文,谢谢!
什么时候你需要使用Javascript的MVC框架?
如果你开发的程序可能需要和API或者服务通讯,而且要求大量的视图操作或者数据操作,你将发现使用一个成熟的框架非常有帮助。
典型的例子就是Gmail和Google Docs。
如果你的应用只是依赖于服务器来生成web页面和视图,并且只需要使用一些简单的javascript或者jQuery来使得应用更加的具有互动性,使用框架就不是很有必要。
选择框架的标准
如果你需要选择框架的话,你需要问问自己这些问题:
- 这个框架究竟可以带来什么?
- 这个框架是不是有实际的成功案例?
- 这个框架是不是成熟?
- 这个框架是不是足够灵活或者相对比较死板?
- 你有没有应用过相关的框架?
- 这个框架是不是有很好的文档支持?
- 这个框架的大小,包括依赖的类库,是不是很大?
- 支持这个框架的社区是不是不错?
如何选择框架? 什么时候该用什么?
为了更好的帮助大家选择框架,这里我们做了一个high-level的总结,希望能够帮助大家选择框架:
Backbone.js
如 果你需要灵活的方式来解决应用中层次分离问题,并且支持持久层和REST同步服务,models,views,事件驱动,模板和定位等这个框架是个不错的 选择。它允许model修改后View能够自动更新。而且很多大的公司都使用它来构建应用,并且拥有非常好的社区来支持。
Ember.js
如 果你需要桌面级别的应用开发,并且拥有模块化,标准的界面,并且支持MVC的特性,不需要我自己处理所有的东西。要求支持持久化,计算相关属性并且自动更 新模板。支持正确的状态管理而非手动的控制管理。Ember.js是不错的选择,同时它拥有非常详细的文档,及其模板说明。并且拥有丰富的工具。
CanJS
轻量级的试试模板绑定,定向,整合主流类库(jQuery或者Dojo)以优化性能。支持MVC。可能在大型的应用中使用不多,但是适合于有复杂应用开发经验的人,针对这种情况,canjs是个不错选择。
AngularJS
如果你需要使用宣示的方法来定义View的行为。主要通过自定义的HTML标签和组件来达到目的。支持快速测试,URL管理和分离的MVC。和其它的框架不 一样,它提供HTML编译器来创建自己的HTML中的DSL。灵感来自于即将来到的web platform特性,例如web组件,同时也拥有自己的工具。如果想了解相关特性,请参考:AngularJS的五个超酷特性
Dojo
提供非常棒的基础用来开发大型的应用。支持成熟的组件架构,模块支持lazy加载并且支持异步,简单整合CDNs,拥有广泛的模块(图形,图表,Grid等等),支持国际化本地化。支持OOP,MVC并且支持创建单元来解决复杂的架构。
YUI
需要利用YUI的扩展架构。支持Model,view和router,简化书写多视图的应用支持routing,视图变化等等。 拥有完整的解决方案包括组件/控件及其相关工具,帮助你创建一个有组织的应用架构。拥有底层工具(yuiproject)。
Spine
帮助你简单的实现异步界面并且不需要任何依赖。可以非常固定但是对于创建应用比较灵活。家头提供了必须要的骨架,例如,model,view,controller,事件和routing。但是仍旧比较小。针对CoffeeScript做了优化,拥有非常清楚的文档。
KnockoutJS
可以方便的使用清楚的底层数据模型和宣告性绑定构建复杂动态的UI 。Model变化后能够自动更新UI,使用双向的绑定,支持依赖来跟踪model数据。可以使用任何你想使用的框架。或者一个已存在的应用。支持内建模板,并且很容易扩展。
jQuery
搭建简答的网站和web应用。不需要很多代码,并且组织代码不是个问题。主要专注于浏览器的区别,我们专心于开发本身。很容易的绑定事件,和远程服务互动,支持扩展,拥有大量的插件。
希望这些简单的内容对于你的框架选择有所帮助,如果你有问题,请给我们留言!