三大框架AngularJS、BackboneJS和EmberJS對比
***的JavaScript庫是jQuery,它提供了一套JavaScript函數(shù),減少了很多開發(fā)工作。但是jQuery只是一個輔助庫,真正要在前端MVC模式上有大作為的庫,還是要數(shù)下面的三個JavaScript庫:AngularJS、BackboneJS和EmberJS。下面我將對這三個JavaScript庫做對比。
一、介紹
1、AngularJS
AngularJS是一個開源的JavaScript框架,由Google發(fā)明并負(fù)責(zé)演進(jìn)和維護(hù)。AngularJS基于MVC架構(gòu),目標(biāo)是使得開發(fā)和測試更富有效率、更加容易。AngularJS擴(kuò)展了傳統(tǒng)的HTML代碼,使得動態(tài)內(nèi)容能夠和頁面元素進(jìn)行雙向綁定。AngularJS是一個獨立的框架,這意味著它不依賴于任何別的JavaScript框架。
2、BackboneJS
BackboneJS是一個開源的、輕量級的MVC框架。它誕生于2010年,發(fā)展的非常迅速,很快就成長為一種替代笨重的、全功能MVC架構(gòu)(比如ExtJS)的JavaScript框架。這使得很多國外互聯(lián)網(wǎng)公司開始采用它來構(gòu)建自己的應(yīng)用服務(wù)。比如Pinterest、Flixster、AirBNB等公司。BackboneJS庫提供了一種鍵值綁定、自定義事件的模型,使得Web應(yīng)用富有結(jié)構(gòu)化,而且還有一套帶枚舉函數(shù)和視圖的豐富API的集合。BackboneJS庫可以通過RESTful風(fēng)格的JSON接口來連接你現(xiàn)有的API。BackboneJS庫依賴于Underscore.js庫。
BackboneJS以數(shù)據(jù)為模型,可以對模型進(jìn)行創(chuàng)建、驗證、銷毀、保存到服務(wù)器端等操作。視圖用于顯示模型的狀態(tài),當(dāng)屬性發(fā)生了改變時,能被觸發(fā),視圖可以做出相應(yīng)的反應(yīng),并重現(xiàn)新信息。BackboneJS是在一套最小的數(shù)據(jù)結(jié)構(gòu)(模型和集合)和用戶界面(視圖和URL)原語之間的一個嘗試,對于構(gòu)建JavaScript的Web應(yīng)用非常有用。
3、EmberJS
EmberJS要追述源頭得回到2007年,它源于SproutCore MVC框架,SproutCore框架最初是由SproutIt公司開發(fā),后來由Apple接手并演進(jìn)和維護(hù)。直到2011年,Yehuda Katz(他是jQuery項目和Ruby on Rails項目的核心貢獻(xiàn)者)發(fā)起了EmberJS項目。值得注意的是,EmberJS庫的用戶包括雅虎、Groupon和ZenDesk等互聯(lián)網(wǎng)公司。
EmberJS允許開發(fā)者創(chuàng)建可擴(kuò)展的單頁Web應(yīng)用。它提供了一套豐富的Handlebars.js庫,功能包括:提供了對象模型、聲明式的兩路數(shù)據(jù)綁定、可計算的屬性、自動化更新的模板,還提供了一個路由器來管理應(yīng)用程序的狀態(tài)。
二、比較
1、社區(qū)
選擇框架的一個重要因素是框架社區(qū)的規(guī)模和開發(fā)者的數(shù)量和活躍度。三者相比,AngularJS社區(qū)規(guī)模***、發(fā)展更快、社區(qū)也最有活力。而且AngularJS在GitHub的跟隨者也更多,在StackOverflow的問答也更多。
2、框架的大小
頁面加載時間是Web應(yīng)用成功的關(guān)鍵因素之一。用戶需要能快速地訪問信息,影響頁面加載時間的兩個因素: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框架的大小才是真正最小的。
3、模板
AngularJS框架和EmberJS框架都包含了一個模板引擎。而BackboneJS框架無模板引擎,開發(fā)者需要選擇一個第三方模板引擎集成到項目中。當(dāng)然,對于BackboneJS框架來說,Underscore.js庫就包含了模板引擎,可以用它。
4、靈活性
有很多JavaScript插件可以完成很多專門的工作。這是非常有用的,因為每一種框架都無法做到面面俱到。所以,對于框架來說,支持插件、支持?jǐn)U展就很重要了。三者相比,BackboneJS框架是最靈活的框架,因為它的約定最少,開發(fā)者在使用時可以自己做很多決定。EmberJS框架和AngularJS框架在某種程度上來說是靈活的,但不夠靈活。
5、學(xué)習(xí)曲線
AngularJS框架的開發(fā)者可以快速構(gòu)建Web應(yīng)用,快速使用雙向綁定,基本上無需學(xué)習(xí)。但是要深入掌握AngularJS框架,就需要學(xué)習(xí)一些專業(yè)術(shù)語,學(xué)習(xí)曲線也比較陡峭。EmberJS框架的學(xué)習(xí)曲線就比AngularJS平滑一些。
BackboneJS框架更容易學(xué)習(xí),但是要掌握它還需學(xué)習(xí)Underscore.js庫。
三、結(jié)論
沒有***的JavaScript框架,只有最適合自己的JavaScript框架。一般來說,AngularJS框架相對更好一些,它發(fā)展最迅猛,更有活力,有龐大的社區(qū)和Google在背后支持。BackboneJS是極簡主義的框架,它體積小、易于學(xué)習(xí)。
***的JavaScript庫是jQuery,它提供了一套JavaScript函數(shù),減少了很多開發(fā)工作。但是jQuery只是一個輔助庫,真正要在前端MVC模式上有大作為的庫,還是要數(shù)下面的三個JavaScript庫:AngularJS、BackboneJS和EmberJS。下面我將對這三個JavaScript庫做對比。