angular.js,backbone.js,ember.js區別

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 仍是沒有那麼多功能

相關文章
相關標籤/搜索