本文轉載自 做者:chszs,博客主頁:http://blog.csdn.net/chszs前端
若是有心搜索的話,你能找出上百種JavaScript框架。當咱們要開發一個現代化的、敏捷酷炫的網站時,JavaScript是必備的基礎技術。那麼問題來了,如何在這麼多JavaScript框架中選取最能知足咱們需求的框架?這是一個難題。並且還有不少挑戰,好比要讓網站在不一樣的客戶端瀏覽器上表現出一致的行爲和外觀,這也很不容易。選擇最適合的JavaScript庫來輔助咱們的開發,簡化開發難度和減小開發耗時。瀏覽器
最流行的JavaScript庫是jQuery,它提供了一套JavaScript函數,減小了不少開發工做。可是jQuery只是一個輔助庫,真正要在前端MVC模式上有大做爲的庫,仍是要數下面的三個JavaScript庫:AngularJS、BackboneJS和EmberJS。下面我將對這三個JavaScript庫作對比。服務器
AngularJS是一個開源的JavaScript框架,由Google發明並負責演進和維護。AngularJS基於MVC架構,目標是使得開發和測試更富有效率、更加容易。AngularJS擴展了傳統的HTML代碼,使得動態內容可以和頁面元素進行雙向綁定。AngularJS是一個獨立的框架,這意味着它不依賴於任何別的JavaScript框架。數據結構
BackboneJS是一個開源的、輕量級的MVC框架。它誕生於2010年,發展的很是迅速,很快就成長爲一種替代笨重的、全功能MVC架構(好比ExtJS)的JavaScript框架。這使得不少國外互聯網公司開始採用它來構建本身的應用服務。好比Pinterest、Flixster、AirBNB等公司。BackboneJS庫提供了一種鍵值綁定、自定義事件的模型,使得Web應用富有結構化,並且還有一套帶枚舉函數和視圖的豐富API的集合。BackboneJS庫能夠經過RESTful風格的JSON接口來鏈接你現有的API。BackboneJS庫依賴於Underscore.js庫。架構
BackboneJS以數據爲模型,能夠對模型進行建立、驗證、銷燬、保存到服務器端等操做。視圖用於顯示模型的狀態,當屬性發生了改變時,能被觸發,視圖能夠作出相應的反應,並重現新信息。BackboneJS是在一套最小的數據結構(模型和集合)和用戶界面(視圖和URL)原語之間的一個嘗試,對於構建JavaScript的Web應用很是有用。框架
EmberJS要追述源頭得回到2007年,它源於SproutCore MVC框架,SproutCore框架最初是由SproutIt公司開發,後來由Apple接手並演進和維護。直到2011年,Yehuda Katz(他是jQuery項目和Ruby on Rails項目的核心貢獻者)發起了EmberJS項目。值得注意的是,EmberJS庫的用戶包括雅虎、Groupon和ZenDesk等互聯網公司。函數
EmberJS容許開發者建立可擴展的單頁Web應用。它提供了一套豐富的Handlebars.js庫,功能包括:提供了對象模型、聲明式的兩路數據綁定、可計算的屬性、自動化更新的模板,還提供了一個路由器來管理應用程序的狀態。學習
做者:chszs,轉載需註明。博客主頁:http://blog.csdn.net/chszs測試
選擇框架的一個重要因素是框架社區的規模和開發者的數量和活躍度。三者相比,AngularJS社區規模最大、發展更快、社區也最有活力。並且AngularJS在GitHub的跟隨者也更多,在StackOverflow的問答也更多。網站
頁面加載時間是Web應用成功的關鍵因素之一。用戶須要能快速地訪問信息,影響頁面加載時間的兩個因素:JavaScript框架的大小和啓動它所需的時間。
比較這三個框架的壓縮版:AngularJS 1.2版有105KB,EmberJS 1.9.1版有97KB,BackboneJS 1.1.2版有65KB。可是,AngularJS框架無任何依賴,BackboneJS框架依賴於Underscore.js庫(52KB),EmberJS框架和BackboneJS框架一般須要jQuery庫(82KB)來簡化操做。所以,AngularJS框架的大小纔是真正最小的。
AngularJS框架和EmberJS框架都包含了一個模板引擎。而BackboneJS框架無模板引擎,開發者須要選擇一個第三方模板引擎集成到項目中。固然,對於BackboneJS框架來講,Underscore.js庫就包含了模板引擎,能夠用它。
有不少JavaScript插件能夠完成不少專門的工做。這是很是有用的,由於每一種框架都沒法作到面面俱到。因此,對於框架來講,支持插件、支持擴展就很重要了。三者相比,BackboneJS框架是最靈活的框架,由於它的約定最少,開發者在使用時能夠本身作不少決定。EmberJS框架和AngularJS框架在某種程度上來講是靈活的,但不夠靈活。
AngularJS框架的開發者能夠快速構建Web應用,快速使用雙向綁定,基本上無需學習。可是要深刻掌握AngularJS框架,就須要學習一些專業術語,學習曲線也比較陡峭。EmberJS框架的學習曲線就比AngularJS平滑一些。
BackboneJS框架更容易學習,可是要掌握它還需學習Underscore.js庫