JavaScript框架的開發(fā)現(xiàn)狀和生態(tài)環(huán)境

2013-10-31 08:09:50來源:infoq作者:崔康

這次分析涵蓋了UI庫、框架和包括服務(wù)器端運(yùn)行時的全套框架,挖掘到了前十名開源項(xiàng)目的社區(qū)。Dave分析的項(xiàng)目都是時下最熱門的UI項(xiàng)目,包括AngularJS, Ember.js, SproutCore, Backbone.JS, Knockout.js, Spine, CanJS, Meteor-JS, Derby, 和Yahoo Mojito。

資深的前端專家Dave Gruber最近對十個熱門的Javascript框架的發(fā)展現(xiàn)狀做了深入的分析,包括Angular、Backbone、Ember等,分析的方面包括貢獻(xiàn)者數(shù)量、生態(tài)環(huán)境、社區(qū)規(guī)模等等。

Dave在統(tǒng)計(jì)報(bào)告一開始,先闡述了做調(diào)查分析的背景:在過去的幾年中,我們已經(jīng)看到了UX庫和框架的大量增長,而且其中的大部分都是開源的。有很多文章比較了這些框架的用途、方法以及完整性等方面的不同,但卻常常忽視了圍繞著這些開源項(xiàng)目的社區(qū)和生態(tài)系統(tǒng)的規(guī)模、強(qiáng)度和走勢等度量標(biāo)準(zhǔn)。而這些統(tǒng)計(jì)信息應(yīng)該在您的選擇中起到關(guān)鍵性的作用。

今年的早些時候,我有機(jī)會對自2012年開始增長最快的開源項(xiàng)目做一個分析,并且我被名單列表中的JacaScript項(xiàng)目的數(shù)量震驚了。這使得我對特定的、專注于幫助開發(fā)者建立豐富、可擴(kuò)展的用戶界面的JavaScript 庫/框架的項(xiàng)目做了更加深入的了解。我的分析用到了開源社區(qū)Ohloh.net中的元數(shù)據(jù)和GitHub中的集成數(shù)據(jù),包括評星的數(shù)目(用來幫助用戶追蹤他們覺得有趣的資料庫)以及個別項(xiàng)目吸引到的追隨者的數(shù)量。

這次分析涵蓋了UI庫、框架和包括服務(wù)器端運(yùn)行時的全套框架,挖掘到了前十名開源項(xiàng)目的社區(qū)。Dave分析的項(xiàng)目都是時下最熱門的UI項(xiàng)目,包括AngularJS, Ember.js, SproutCore, Backbone.JS, Knockout.js, Spine, CanJS, Meteor-JS, Derby, 和Yahoo Mojito。

我的目標(biāo)是描繪出這些項(xiàng)目的周邊社區(qū)的狀態(tài),并著重找出規(guī)模和增長速度,并且努力將這些數(shù)據(jù)與個別項(xiàng)目的普及度和成功與否相關(guān)聯(lián)。同時在假設(shè)生態(tài)系統(tǒng)會進(jìn)一步反映一個項(xiàng)目的普及程度和成功與否的同時,關(guān)注各個項(xiàng)目周圍的的生態(tài)系統(tǒng)。

探索一個項(xiàng)目每月貢獻(xiàn)的數(shù)量和增長量能夠觀察出項(xiàng)目的走勢并且可以凸顯項(xiàng)目捕捉業(yè)界廣泛興趣的重要臨界點(diǎn)。Dave統(tǒng)計(jì)了項(xiàng)目的每月貢獻(xiàn)的參與,也表明了在某個給定月份中貢獻(xiàn)代碼的開發(fā)者數(shù)量。從結(jié)果上看,SproutCore是每月貢獻(xiàn)參與量的早期領(lǐng)先者。然而當(dāng)2011年12月SproutCore fork并創(chuàng)建了Ember項(xiàng)目后,許多團(tuán)隊(duì)中的開發(fā)者跟著一起變動,并跳槽到了Ember項(xiàng)目中,F(xiàn)在,Ember和Angular JS一起,已經(jīng)在2013年的月代碼貢獻(xiàn)量上表現(xiàn)出了顯著的增長,并從社區(qū)整體的增長角度來看成為了新興的領(lǐng)先者。同時我們注意到,今年春天,在AngularJS和Ember加速增長的同時,Backbone和Meteor的活躍貢獻(xiàn)量在顯著下降。

除此之外,Dave認(rèn)為,觀察項(xiàng)目整個發(fā)展歷程中的全時(all time)貢獻(xiàn)者數(shù)量可以幫助我們理解一些不同的觀點(diǎn)。一方面,它往往反映出一個項(xiàng)目的管理風(fēng)格。很多項(xiàng)目由一小組人進(jìn)行嚴(yán)格的管理,而其它一些項(xiàng)目則完全開放從而接受廣泛和多元化的貢獻(xiàn)。全時貢獻(xiàn)者的數(shù)量也可以幫助我們理解項(xiàng)目在任何一個時間段中的相對發(fā)展趨勢。大規(guī)模、制度完善的項(xiàng)目常常擁有較多數(shù)量的貢獻(xiàn)者,來幫助修補(bǔ)漏洞、撰寫說明文檔以及其它相關(guān)任務(wù)。貢獻(xiàn)者的總數(shù)往往和代碼庫的總體規(guī)模有關(guān)。當(dāng)結(jié)合其它社區(qū)指標(biāo)時,比如代碼行數(shù)、總提交量和月提交量時,這一數(shù)據(jù)最有價值。

從結(jié)果上看,Angular JS和Ember展現(xiàn)出最大的社區(qū),從而反映出它們近一段時間以來的每月貢獻(xiàn)增長量。

除了當(dāng)前的貢獻(xiàn)者數(shù)量,項(xiàng)目社區(qū)的力量也體現(xiàn)在項(xiàng)目生態(tài)系統(tǒng)的建立與擴(kuò)展之上。這就意味著我們不能完全單獨(dú)依靠項(xiàng)目社區(qū)的核心指標(biāo)來知道一個項(xiàng)目發(fā)展走勢的全部內(nèi)容。更加廣闊的觀察生態(tài)系統(tǒng)才能進(jìn)一步描述出某個項(xiàng)目整體的成功。開源項(xiàng)目的魯棒性可以通過與之相關(guān)的周邊項(xiàng)目數(shù)量來衡量。在這方面,Backbone.js和AngularJS很明顯是贏家。

值得注意的是,Backbone擁有可觀的生態(tài)系統(tǒng),顯示了它在業(yè)界整體的發(fā)展趨勢和使用量。為了進(jìn)一步的驗(yàn)證Backbone的生態(tài)系統(tǒng),我在Github上對搜索進(jìn)行過濾,只保留了評星大于等于三星以及和Backbone相關(guān)的內(nèi)容,并且得到了1627個項(xiàng)目的搜索結(jié)果。將此結(jié)果與AngularJS的三星之上的794個項(xiàng)目相比,可以知道Backbone的生態(tài)系統(tǒng)規(guī)模仍然是AngulatJS的兩倍。

由于全套(full stacj)解決方案的審查角度和其他項(xiàng)目有區(qū)別,Dave對這類項(xiàng)目的增長進(jìn)行了單獨(dú)的觀察。全套解決方案中既包括客戶端框架也包括服務(wù)器端框架,可以假設(shè),解決方案涉及到的代碼量越多,隨著時間推移參與其中的技術(shù)人員數(shù)量也就更多。

Meteor和Mojito似乎吸引了更強(qiáng)的社區(qū),至少從貢獻(xiàn)者的數(shù)量上衡量起來是這樣的。

Dave發(fā)現(xiàn),將時間投入到用JavaScript創(chuàng)建結(jié)構(gòu)化方法的開發(fā)人員數(shù)量正在快速增長,反映出了UI框架在應(yīng)用程序開發(fā)中的重要地位,并且不同規(guī)模的企業(yè)對于不同用例方案支持方法的需求也在持續(xù)增長。從今年一月份開始,代碼貢獻(xiàn)量出現(xiàn)了顯著的增長,這很可能是受到了AngularJS和Ember團(tuán)隊(duì)的推動而導(dǎo)致的結(jié)果。

JavaScript正吞食占據(jù)這個世界。從2011年到2013年,開發(fā)者的平均數(shù)量翻了不止一倍。

你可能想知道每個項(xiàng)目的代碼庫的大小以及代碼庫數(shù)量和貢獻(xiàn)者數(shù)量之間的聯(lián)系。通過比較這些數(shù)據(jù),Dave發(fā)現(xiàn)社區(qū)規(guī)模和總提交量和代碼基礎(chǔ)的大小幾乎沒有聯(lián)系。舉例說明,Angulat JS項(xiàng)目中每個貢獻(xiàn)者平均貢獻(xiàn)413行代碼,而Ember表明每位貢獻(xiàn)者平均貢獻(xiàn)146行代碼。每個貢獻(xiàn)者提供的代碼行數(shù)越多表明這個項(xiàng)目編寫起來越簡單。從而有人將其視為一個項(xiàng)目健康程度的一項(xiàng)衡量指標(biāo)。

不過你可以找到社區(qū)規(guī)模(即總體貢獻(xiàn)者數(shù)量)與總體提交量中的聯(lián)系,并看到不同項(xiàng)目的平均貢獻(xiàn)者提交量的變化非常不同。這可能表示一些項(xiàng)目更容易編寫(做出貢獻(xiàn)),從而影響到項(xiàng)目的長期發(fā)展。

Dave認(rèn)為,社區(qū)規(guī)模和增長情況對于一個項(xiàng)目的發(fā)展趨勢而言是非常重要的指標(biāo)。盡管這些指標(biāo)不能告訴我們項(xiàng)目的全部情況,但它們提供了重要的評價標(biāo)準(zhǔn),從而被大量投資并且?guī)椭覀兓谏鐓^(qū)的可行性和可持續(xù)性做出決定。它們同時也能幫助我們找到項(xiàng)目生命周期中的臨界點(diǎn),為我們提供了參與項(xiàng)目并產(chǎn)生影響的機(jī)會。

最后,Dave總結(jié)道:

豐富的UI框架是離我最熟悉也最喜愛的主題,因?yàn)槲以贏dobe公司工作五年來推動Flex框架的產(chǎn)品營銷。現(xiàn)在這個項(xiàng)目已經(jīng)轉(zhuǎn)為了一個Apache項(xiàng)目。基于所有的數(shù)據(jù)分析,我的感受是Ember和AngularJS是新近涌現(xiàn)出的值得關(guān)注的JS框架。數(shù)據(jù)也表明,Backbone周圍的生態(tài)系統(tǒng)表明了這個UI方案非常受歡迎并且十分可信,因此它一定會有一個持續(xù)并且光明的未來。

關(guān)鍵詞:JavaScript框架