十大不容錯過的熱門JavaScript框架項目
譯文技術社區的力量在用戶選擇JavaScript框架時發揮著至關重要的作用。在今天的文章中,我們將一同了解支撐AngularJS、Backbone.JS以及Ember.JS等項目的背后推手。
想要弄清楚到底哪種JavaScript UI框架能夠切實滿足項目及組織的實際需求?面對十大人氣方案,我們還有很多需要認真考慮的因素。
在過去幾年里,我們親眼目睹了UX庫及框架的迅猛發展——其中大部分屬于開源技術成果。目前市場上存在大量用于比較各類框架完整性的方法,但人們往往忽視了幾大至關重要的決定性因素——這些開源項目背后的技術社區與生態系統。技術社區與生態系統的規模、實力與發展走勢將最終決定開源項目的未來命運。總而言之,這些統計結果應該成為指導決策的關鍵性依據。
今年早些時候,我曾經有幸參與了一次調查,其主題為“2012年以來發展勢頭最迅猛的開源項目”。最終的排行結果令我震驚,榜單上幾乎擠滿了各類JavaScript項目。這激發了我的好奇心,因此我決定深入了解特定JavaScript庫/框架項目,看看這些專注于幫助開發人員創建出豐富且高擴展性用戶界面的項目到底為何擁有如此廣闊的發展空間。我在分析中使用的開源社區元數據來自Ohloh.net以及GitHub,其中包括各項目的***評分(用于幫助用戶及時掌握感興趣的資源庫的***動態)以及個別項目所吸引到的擁護者人數。
哪些項目榜上有名
在本次調查分析中,我關注的主要是十大開源項目背后的技術社區。順帶一提,這十大開源項目涵蓋了UI庫、框架以及包括服務器端運行時間在內的全堆棧框架。此次分析的對象全部為當下的熱門UI項目,例如AngularJS、Ember.JS、SproutCore、Backbone.JS、Knockout.js、Spine、CanJS、Meteor-JS、Derby以及Yahoo Mojito。
我的目標是描繪出一幅關于各項目相關技術社區的發展圖譜,尤其是在規模與發展速度方面,并將此與個別項目的普及范圍及成功程度加以比照。當然,我還在密切關注各個項目所對應的生態系統,希望找到生態系統狀況與項目普及范圍及成功程度之間的聯系。
每月貢獻者數量
探尋各個項目每月貢獻者的具體數量及增長幅度有助于了解該項目的發展態勢,并足以了解業務對該項目的關注程度外加關鍵性發展臨界點。下面的圖表中囊括了十大項目的每月貢獻者參與情況,數字代表的是各個月份提交代碼的貢獻者數量。
每月項目貢獻者:Ember項目的代碼貢獻者數量如火箭般節節攀升。細心的朋友可能已經注意到,貢獻者爆炸式增長的歷史轉折點出現在2011年12月,當時該項目剛剛脫離SproutCore并獨立出來。谷歌的AngularJS的貢獻者數量同樣走勢喜人。
如大家所見,SproutCore曾經在發展初期領跑每月貢獻者數量榜。然而隨著2011年12月SproutCore的分裂與Ember的誕生,技術團隊中的大部分開發人員都選擇了Ember作為自己的新起點。如今Ember與AngularJS一道成為2013年中貢獻者數量最多的項目,且二者在全局技術社區的發展態勢方面同樣表現優異。需要注意的是,今年春季Backbone與Meteor的每月貢獻者數量出現顯著下滑,而此時正是AngularJS與Ember極速上升的時段。
歷史貢獻者數量
下面我們來看項目整個發展歷程中的總體貢獻者數量,這能幫助我們從另一個視角找到合理的結論。值得強調的是,歷史貢獻者數量往往反映出項目的具體管理風格。很多項目由小型團隊進行嚴格管理,其它項目則采取完全開放的政策、接受技術業界所帶來的多樣化元素。
項目發展歷程中的總體貢獻者數量:AngularJS與Ember擁有最龐大的全局技術社區,這充分反映了二者在近一段時間以來出色的每月貢獻狀況。
歷史貢獻者數量還能幫助我們理解項目在任何特定時段的相對發展趨勢。規模龐大、制度完善的項目往往擁有可觀的貢獻者基礎,他們幫助修復漏洞、制作說明文檔并完成大量其它任務。貢獻者總數往往與項目代碼基礎的規模密切相關。與其它技術社區指標相比,例如代碼行數、總提交數量以及每月提交數量,歷史貢獻者數量更能說明問題。
項目生態系統
除了當前貢獻者數量之外,項目技術社區的力量還體現在生態系統方面。生態系統的建立與擴展同項目本身存在著千絲萬縷的聯系。這意味著單靠核心技術社區,我們還無法一窺項目的真實全貌。只有將視角放在更加廣闊的生態系統身上,大家才能夠對單一項目的全面成效做出準確判斷。
相關項目數量:開源項目的穩定性可以通過與之相關的周邊項目數量來衡量。在這方面,Backbone.js與AngularJS是當之無愧的贏家。
值得注意的是,Backbone擁有龐大的生態系統,這從側面顯示了其在技術業界的普及程度及發展態勢。為了進一步驗證Backbone生態系統的發達程度,我在GitHub上過濾掉所有評價不足三顆星的內容、只保留三星及心目且與Backbone密切相關的項目——仍然找到了1627個結果。相比之下,AngularJS的三星及心目相關項目只有個,這意味著Backbone的生態系統規模仍然達到AngularJS的兩倍以上。
全堆棧解決方案
由于全堆棧解決方案的審視角度與其它項目有所差別,因此我希望將這類項目單獨劃分并進行比較。全堆棧解決方案中既包含客戶端框架也包含服務器端框架;由此可以假設,此類方案的相關代碼數量更多、隨著時間推移參與進來的技術人員規模也更為龐大。下面這份圖表顯示的正是這些項目在相對較早的發展時期內的參與情況。
全堆棧解決方案數量:Meteor與Mojito對于技術社區的吸引力似乎更強,至少從貢獻者數量的角度來看是這樣。
JavaScript的崛起
將時間與精力用于創建結構化JavaScript方案的開發人員數量正持續激增。以下圖表顯示的正是自2011年年初至令,參與代碼貢獻的開發人員數量。統計結果反映出如今UI框架在應用程序開發工作中的重要地位,同時也說明不同規模的企業對于差異化用例的方案需求正日益強烈。自今年一月份開始,參與代碼貢獻的開發者數量迎來顯著增長,這很可能是受到了AngularJS與Ember團隊的帶動。
十大JavaScript項目的代碼貢獻者總數:如果大家抱有任何疑問,這份圖表將用事實證明JavaScript正以改天換地之勢席卷全球。另外,與2011年相比,今年各項目的平均貢獻參與者數量普遍翻倍。
代碼行與提交數量
大家可能希望進一步了解各大開源項目的代碼基礎規模——以及代碼基礎與代碼貢獻者數量之間的關聯。通過比較,我們發現技術社區規模與總體提交數量幾乎跟代碼基礎規模沒啥關系。舉例來說,AngularJS項目中每位貢獻者平均帶來413行代碼,而Ember項目中每位貢獻者平均只帶來146行代碼。
碼行數與貢獻者數量:每位貢獻者提供的代碼行數越多,就說明該項目的技術難度越低——某些人將此視為項目健康程度的一項考量指標。
不過大家也可以在技術社區規模(即歷史貢獻者總數)與歷史提交數量之間找到關聯,并以此為基礎分析每位貢獻者為項目帶來的平均提交數量。統計結果可能會告訴我們哪些項目更易于做出貢獻,這又會給項目的長期發展帶來哪些影響。
預見未來
技術社區規模與發展速度對于項目的前景而言非常重要。盡管這些指標無法向我們昭示整條軌跡的來龍去脈,但我們仍然可以借此了解技術人員對特定社區的參與程度、從而幫助自身了解項目的可行性及可持續性。它們同時也能幫助大家找到項目生命周期中的各類增長拐點,從而找到參與項目并對其產生影響的***時機。
UI框架是我最熟悉也最喜愛的主題,這是因為我曾在Adobe公司用五年時間打理Flex框架的產品營銷活動——現在該框架已經轉型為Apache項目。基于前面提到的各項數據分析,我的結論是Ember與AngularJS是近來崛起的框架當中最值得關注的競爭選手。不過在另一方面,Backbone那龐大而活躍的技術社區則昭示了該項目作為UI方案的極高人氣,相信它將擁有可持續且光明的未來。