1 backbone. javascript
对于初学者来讲,我很是建议首先学习backbone 而不是jQuery. 由于jQuery提供的功能是操做DOM和Ajax数据传输. 而Backbone的功能和目的仅仅是提供一个javascript的MVC 实际针对Web就是 MVR. (Model, View, Router路由). 对于初学者有一个良好的代码结构,而不是一上来就用jQuery频繁操做DOM,致使代码很难维护.html
backbone功能仅限于此. backbone 提供了Model层处理前端数据模型, Router提供了前端页面路由(目前大多数都是后端提供页面路由,因此能够不用). View提供了页面视图的模块化和做用域.(完美解决了jQuery一个页面屡次出现同一个组件经过id或class操做dom而致使没法分别哪一个组件问题). View也自带本身的模板引擎.前端
backbone没有提供任何额外的功能. 例如操做dom仍是用jQuery, 数据传输也是基于jQuery的ajax经过Model封装了rest.html5
backbone还依赖一个很是好用的库 underscore.js 这个库封装了大部分js对象,数组操做, 例如循环,遍历,map, filter对象某个属性, 删除某个属性等等. 很方便,因此backbone其实也是一个库,而不是框架java
2 Angularweb
目前在项目中完整大规模使用. Angular官方定位 HTML enhanced for web apps(加强目前web app) 和 AngularJS — Superheroic JavaScript MVW Framework (英雄般的MV 不管什么结构层次都支持的框架)ajax
angular 目前的发展节奏就是 大而全, 就是你有我有全都有. 使用angular后,你不须要任何依赖其余库. angular都会有,如今没有之后也会加入.后端
angular 功能包括
2.1 数据绑定 就是MVVM 结构, 目的就是让开发者彻底忘记操做DOM, 只须要操做数据,html页面就会自动更新
例如 var shownumber = 1, 那么你把shownumber = 2 时, 界面就自动更新了, 彻底不须要用jQuery用.html()或.text()更新数据. 就这个绑定功能,目前大部分网站的js代码都能删掉 三分之二.数组
2.2 模块系统, angular 有本身的模块系统, 不须要在用require js 或其余模块系统. 目前第三方模块已经不少http://ngmodules.org/promise
2.3 数据传输 内置$http,取代了jQuery的$.ajax 并且内置promise,很是好用. 同时有官方作的$resource 模块 支持restful 接口
2.4 操做Dom 内置了一个简化版本的相似jQuery的angular.element, 彻底能够不用$ jQuery. 同时提供大量内置的ng- 开头的指令系统经过在html模板中 声明式绑定 解决操做DOM问题. (声明式指令简直就是对不懂js的前端开发的福音,不再用js的.show(),.hide()了, 直接写到html标签上)
2.5 页面路由系统
2.6 内置一套很是好用结合html5的表单验证系统
2.7 内置ng-指令开头的事件系统 例如ng-click等
2.8 内置很是贴心的过滤器系统, 例如你先把时间写成2012.01.01 只要用 data | xxxx-xx-xx ,或 货币符号把人民币改为美圆 {{amount | currency:"USD$"}} ,真贴心.
2.9 集成数组对象操做方法, 看来underscore.js也不须要了. angular.xxx 开头的方法一大堆. (目前我仍是用underscore)
2.10 动画效果, angular1.2版本后分为独立的模块 ng-animate 很是方法,只要在html写上样式名字动画自动就出来了,彻底不用操心js代码
2.11 操做cookie的模板
2.12 移动端事件模块
2.13 html 标签过滤器, 防止非法字符什么的.
还有不少, angular定位就是大而全. 其实也能感受到"框架" 与 "库" 的区别
3 Ember
定位是框架, 原来是苹果公司的内部项目.ember提供了MVC结构 和 backbone 很是像.但ember的view集成了数据绑定功能. 使用handlebar 做为模板引擎, (angular模板是DOM模板 和 backbone,ember都不同)Ember 还集成路由, 各类贴心易用的属性操做方法, restful ajax.但Ember 对比angular 仍是没有那么多功能