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