獨(dú)家編譯:細(xì)數(shù)十大最熱門的JavaScript框架項(xiàng)目
譯文大家是否正困惑于如何選擇最適合當(dāng)前項(xiàng)目以及企業(yè)需求的JavaScript UI框架?通過下面即將出場(chǎng)的十強(qiáng)競(jìng)逐,相信大家會(huì)擁有更多可資參考的背景信息。
在過去幾年當(dāng)中,我們迎來了用戶體驗(yàn)庫(kù)與框架陣營(yíng)的驚人擴(kuò)張——其中大部分屬于開源項(xiàng)目。很多用戶會(huì)認(rèn)真比較這些框架之間的用途、使用方式以及完善程度。不過需要強(qiáng)調(diào)的是,請(qǐng)大家將目光轉(zhuǎn)向項(xiàng)目社區(qū)以及生態(tài)系統(tǒng)的規(guī)模、實(shí)力以及發(fā)展趨勢(shì),這些才是我們挑選方案時(shí)最需要考量的要素。
就在今年早些時(shí)候,我有機(jī)會(huì)對(duì)自2012年以來發(fā)展最為迅猛的開源項(xiàng)目進(jìn)行分析。經(jīng)過調(diào)查, JavaScript相關(guān)項(xiàng)目的上榜數(shù)量實(shí)在令我震驚。有鑒于此,我開始更為深入地探究特定JavaScript庫(kù)/框架項(xiàng)目,了解它們?nèi)绾螏椭_發(fā)人員建立更為豐富且更具可擴(kuò)展性的用戶界面。我在分析中所涉及的開源社區(qū)元數(shù)據(jù)來自O(shè)hloh.Net以及 GitHub上的企業(yè)數(shù)據(jù),其中包括***評(píng)分(用于幫助用戶直觀了解所關(guān)注項(xiàng)目的水準(zhǔn))以及對(duì)特定項(xiàng)目感興趣的用戶數(shù)量。
哪個(gè)項(xiàng)目力拔頭籌
此次分析深入了解了前十大開源UI庫(kù)、框架以及全堆??蚣埽òǚ?wù)器端運(yùn)行時(shí))項(xiàng)目的相關(guān)技術(shù)社區(qū),而且此次入選的都是當(dāng)下最為熱門的UI項(xiàng)目,其中包括:AngularJS、Ember.js、 SproutCore,、Backbone.JS、Knockout.js、Spine、 CanJS、MeteorJS、Derby以及Yahoo Mojito。
每個(gè)月都會(huì)有新項(xiàng)目與公眾見面 作為最初由SproutCore于2011年十二月打造的項(xiàng)目,Ember的發(fā)行版數(shù)量就如火箭般節(jié)節(jié)攀升。此外,谷歌的AngularJS同樣發(fā)展神速。 |
我的目標(biāo)是通過圖表對(duì)這些項(xiàng)目的相關(guān)社區(qū)進(jìn)行分析(特別是針對(duì)其規(guī)模以及技術(shù)實(shí)力),并收集其使用者規(guī)模以及特定項(xiàng)目的成功程度數(shù)據(jù)。此外,我還關(guān)注與各個(gè)項(xiàng)目緊密相關(guān)的生態(tài)系統(tǒng),并根據(jù)生態(tài)系統(tǒng)的運(yùn)轉(zhuǎn)情況推定項(xiàng)目的人氣與接納水平。
每月貢獻(xiàn)者數(shù)量
了解項(xiàng)目每月貢獻(xiàn)者的數(shù)量與增長(zhǎng)情況有助于掌握該項(xiàng)目的發(fā)展趨勢(shì)以及整個(gè)業(yè)界對(duì)其接納的程度。上頁(yè)中的圖表顯示的是各項(xiàng)目每月貢獻(xiàn)者數(shù)量,其中的統(tǒng)計(jì)數(shù)據(jù)說明了在特定月份曾經(jīng)為該項(xiàng)目作出代碼貢獻(xiàn)的開發(fā)者規(guī)模。
項(xiàng)目自誕生以來的總體貢獻(xiàn)者數(shù)量 AngularJS與Ember的整體社區(qū)規(guī)模最為龐大,這也反映出二者最近一個(gè)月中貢獻(xiàn)者數(shù)量的增長(zhǎng)情況。 |
相關(guān)項(xiàng)目數(shù)量 開源項(xiàng)目的生命力部分體現(xiàn)在以其為核心的相關(guān)項(xiàng)目的具體數(shù)量上。在這里,我們看到Backbone.js以及AngularJS擁有非常顯著的人氣優(yōu)勢(shì)。 |
如大家所見,SproutCore在發(fā)展早期擁有更為突出的每月貢獻(xiàn)者數(shù)量表現(xiàn)。然而自從SproutCore于2011年十二月開始打造Ember之后,很多開發(fā)人員開始轉(zhuǎn)而為這一新項(xiàng)目提供支持。時(shí)至今日,Ember與AngularJS一道在2013年迎來了最為出色的月度貢獻(xiàn)者增長(zhǎng)幅度,從社區(qū)發(fā)展角度看二者也由此躋身***行列。另外需要注意的是,今年春季以來Backbone與Meteor的活躍貢獻(xiàn)者數(shù)量出現(xiàn)了顯著下滑,而AngularJS與Ember在人氣方面則大幅上升。
項(xiàng)目自誕生以來的總體貢獻(xiàn)者數(shù)量縱觀項(xiàng)目在生命周期中的總體貢獻(xiàn)者數(shù)量能幫助我們從不同角度出發(fā)理解其發(fā)展態(tài)勢(shì)。首先,這一結(jié)果通常反映出項(xiàng)目的管理風(fēng)格。很多項(xiàng)目會(huì)以一小部分核心人群為管理重點(diǎn),不過也有不少項(xiàng)目以更為開放的姿態(tài)吸納更為廣泛的貢獻(xiàn)者與參與者。
項(xiàng)目總體貢獻(xiàn)者數(shù)量還能幫助我們理解項(xiàng)目在特定時(shí)間段中的發(fā)展?fàn)顟B(tài)。規(guī)模較大且成熟度較高的項(xiàng)目往往擁有更為可觀的貢獻(xiàn)者群體、他們幫助項(xiàng)目管理者修復(fù)漏洞、發(fā)布說明文檔并完成其它相關(guān)任務(wù)。貢獻(xiàn)者群體的人群通常也與代碼庫(kù)規(guī)模緊密相關(guān)。這項(xiàng)指標(biāo)在與其它社區(qū)衡量指標(biāo)配合起來將***參考價(jià)值,例如代碼行數(shù)、整體提交量以及每月提交量等。
生態(tài)系統(tǒng)項(xiàng)目
除了當(dāng)前貢獻(xiàn)者之外,項(xiàng)目社區(qū)的技術(shù)實(shí)力也是項(xiàng)目生態(tài)系統(tǒng)依存乃至擴(kuò)展的重要基礎(chǔ)。這意味著核心項(xiàng)目社區(qū)本身并不一定始終代表著項(xiàng)目的前進(jìn)勢(shì)頭,將著眼點(diǎn)放在更為廣闊的生態(tài)系統(tǒng)身上才能進(jìn)一步概括特定項(xiàng)目的綜合發(fā)展?fàn)顩r。
值得注意的是,Backbone擁有一套相當(dāng)出色的生態(tài)系統(tǒng),這顯示了其在行業(yè)當(dāng)中旺盛發(fā)展態(tài)勢(shì)以及接納情況。為了進(jìn)一步考察 Backbone的生態(tài)系統(tǒng),我對(duì)自己的調(diào)查結(jié)果進(jìn)行了過濾、僅保留GitHub上與Backbone 相關(guān)且***評(píng)分在三星以上的項(xiàng)目。最終整理結(jié)果,相關(guān)優(yōu)質(zhì)項(xiàng)目總計(jì)1627個(gè),相比之下AngularJS的三星以上相關(guān)項(xiàng)目為794 個(gè)——這意味著Backbone的生態(tài)系統(tǒng)規(guī)模仍然達(dá)到AngularJS的兩倍。
整體堆棧解決方案數(shù)量 Meteor與Mojito的強(qiáng)大技術(shù)社區(qū)似乎更具吸引力——至少?gòu)呢暙I(xiàn)者數(shù)量方面衡量是如此。 |
#p#
全堆棧解決方案
由于全堆棧解決方案與其它項(xiàng)目處于不同層面,因此我決定單獨(dú)審視其發(fā)展趨勢(shì)。全堆棧解決方案當(dāng)中包含客戶端框架以及服務(wù)器端框架;假設(shè)隨著貢獻(xiàn)者數(shù)量的增加、相關(guān)代碼的規(guī)模也將不斷擴(kuò)大。通過以上圖表,我們發(fā)現(xiàn)三個(gè)項(xiàng)目目前都處于早期相對(duì)穩(wěn)定的參與階段。
全部十大JavaScript項(xiàng)目的整體貢獻(xiàn)者數(shù)量 如果大家仍抱有疑問,那么這份圖表將清晰驗(yàn)證JavaScript正在席卷世界的結(jié)論。我們看到,2011到2013年其平均開發(fā)人員數(shù)量增幅超過了100%。 |
JavaScript的崛起
目前愿意利用JavaScript開發(fā)結(jié)構(gòu)化方案并為此投入時(shí)間與精力的開發(fā)人員數(shù)量正迅速上升。下面這份圖表顯示的是自2011年以來參與開發(fā)工作的貢獻(xiàn)者數(shù)量。這反映出當(dāng)下 UI框架在應(yīng)用程序開發(fā)領(lǐng)域的重要地位,也證明了各類規(guī)模的企業(yè)都需要不同類型的支持方案以實(shí)現(xiàn)其特定用例需求。今年一月以來貢獻(xiàn)情況出現(xiàn)了顯著飛躍,這主要是受到 AngularJS以及Ember團(tuán)隊(duì)的有力推動(dòng)。
代碼行與提交數(shù)量
大家可能希望了解每一個(gè)項(xiàng)目的具體代碼庫(kù)規(guī)模——以及代碼行數(shù)與貢獻(xiàn)者數(shù)量間的關(guān)系。經(jīng)過比較,我們發(fā)現(xiàn)社區(qū)規(guī)模與總體提交量幾乎跟代碼庫(kù)大小沒什么必然聯(lián)系。舉例來說,AngularJS項(xiàng)目中每位貢獻(xiàn)者平均提供413行代碼,而Ember項(xiàng)目中每位貢獻(xiàn)者平均提供的代碼行數(shù)僅為146行。
不過我們倒是能夠把社區(qū)規(guī)模(即總體貢獻(xiàn)者數(shù)量)與總體代碼提交量聯(lián)系起來,可以看到不同項(xiàng)目之間每位貢獻(xiàn)者的平均代碼提交量存在顯著差異。這可能意味著某些項(xiàng)目對(duì)開發(fā)者而言更易于實(shí)現(xiàn)代碼貢獻(xiàn),這也影響到了參與者們的堅(jiān)持周期。
代碼量與貢獻(xiàn)者數(shù)量比照 平均每位貢獻(xiàn)者所提交的代碼行數(shù)越多,可能意味著項(xiàng)目的開發(fā)難度越低、也標(biāo)志著項(xiàng)目的健康狀況越理想。 |
預(yù)測(cè)發(fā)展前景
社區(qū)規(guī)模與增長(zhǎng)幅度是反映項(xiàng)目發(fā)展態(tài)勢(shì)的重要指標(biāo)。盡管這些指標(biāo)無法為我們帶來詳盡的信息,但至少能夠說明確實(shí)有人在為項(xiàng)目投入大量時(shí)間與精力,也能幫助我們根據(jù)項(xiàng)目社區(qū)的可行性以及穩(wěn)定性作出決策。它們還可以指導(dǎo)我們掌握項(xiàng)目的推進(jìn)節(jié)奏,幫我們及時(shí)了解項(xiàng)目吸引力以及影響力變化。
我熟悉并且喜愛豐富的UI框架陣營(yíng),這主要是因?yàn)槲以贏dobe公司用五年時(shí)間從事Flex框架的產(chǎn)品營(yíng)銷工作——如今該方案已經(jīng)成為 Apache項(xiàng)目。基于以上分析數(shù)據(jù),我認(rèn)為Ember 與AngularJS是最值得關(guān)注的新興框架方案。此外,Backbone相關(guān)生態(tài)系統(tǒng)證明該UI方案在人氣與提交量?jī)煞矫娑嫉玫搅藦V泛認(rèn)可,因此相信會(huì)擁有可持續(xù)且頗為光明的發(fā)展前景。