新的 JavaScript UI 框架和庫似乎一直都在不停地發(fā)布。每隔六個(gè)月,我們就會(huì)看到一個(gè)全新的框架聲稱自己已徹底改變了 UI 的發(fā)展,然后成千上萬的開發(fā)者在自己的項(xiàng)目中使用它們,寫博客分享使用心得,在 Stack Overflow 中提問和回答,日復(fù)一日,然后又出現(xiàn)一個(gè)更新的(甚至更革命性的)框架來取代上一個(gè)的“王位”。
通過 Stack Overflow 的趨勢(shì)工具以及它們的一些內(nèi)部流量數(shù)據(jù),Stack Overflow 的開發(fā)者決定看一看一些突出的框架現(xiàn)在發(fā)展如何,包括 Angular, React, Vue.js, Backbone, Knockout 和 Ember。
框架的生命周期
Stack Overflow 的趨勢(shì)讓我們了解到,這些技術(shù)隨著時(shí)間的推移,被提問的情況如何,先看一些相對(duì)來說用戶群體較大的框架。
有一段時(shí)間,jQuery 是 Stack Overflow 中 JavaScript 標(biāo)簽的熱門關(guān)鍵字,關(guān)于它的提問幾乎占了新問題的 8%。隨著 AngularJS 和 后來 React 的發(fā)布,圖片中的走勢(shì)迅速發(fā)生了變化,它們蠶食了 jQuery 在社區(qū)中的占有份額。然后從 2016 年左右開始,開發(fā)者開始遷移至谷歌最好和最新的流行框架,所以我們看到 AngularJS 的用戶也開始迅速轉(zhuǎn)用它的后續(xù)版本 Angular 2+。
這些用戶群體較大的框架只顯示了部分情況,事實(shí)上,也有較小的框架在爭(zhēng)奪主導(dǎo)地位。我們可以從下面的圖片看到這些 JavaScript 框架生命周期的殘酷程度。
JavaScript 框架的使用似乎有兩個(gè)主要階段。隨著框架越來越受歡迎,它們似乎都有一個(gè)快速上升的階段,然后又因?yàn)殚_發(fā)者采用更新的技術(shù),它們的上升開始變得沒那么快而且總體是穩(wěn)步下降。這些框架的生命周期只有幾年。從 2011 年開始,業(yè)界似乎主要采用了幾個(gè)存在競(jìng)爭(zhēng)的框架:Backbone, Knockout 和 Ember。有關(guān)這些標(biāo)簽的問題在 2013 年左右出現(xiàn)增長(zhǎng),并且在 AngularJS 開始增長(zhǎng)的同時(shí),又開始在穩(wěn)步下滑。最近的后起之秀是 Vue.js 框架,它被迅速采用,我們可以看到它是 Stack Overflow 上增長(zhǎng)最快的標(biāo)簽之一。 不過,最終只有時(shí)間可以說明這種增長(zhǎng)將會(huì)持續(xù)多久。
通過編程語言和技術(shù)進(jìn)行分析
開發(fā)者使用某個(gè)特定的前端框架或其他框架都會(huì)有各種各樣的因素,主要使用某種編程語言或技術(shù)的開發(fā)者可能更傾向于選擇某個(gè) UI 框架。例如,我們可能會(huì)認(rèn)為 Node.JS 開發(fā)者會(huì)選擇使用與 Ruby on Rails 開發(fā)者不同的框架。
根據(jù)開發(fā)者最常訪問的標(biāo)簽將他們劃分成不同的組,通過進(jìn)行分組,檢查每個(gè)組流向這些框架的流量的百分比。
明顯可以看到,使用 TypeScript 和 CSS 的開發(fā)者對(duì) JavaScript 框架流量的貢獻(xiàn)都比較高。這是很正常的,因?yàn)槭褂眠@些技術(shù)的一般是前端開發(fā)者,所以他們更有可能使用 JavaScript 框架。尤其是 Angular,它和 TypeScript 的依賴關(guān)系特別強(qiáng),因?yàn)?Angular(不是 AngularJS)是用 TypeScript 編寫的。
這次分析也包含了對(duì) C++ 和 C 開發(fā)者的分析,由于主要使用 C 和 C++ 的開發(fā)者更傾向于進(jìn)行更多的系統(tǒng)編程,所以他們不太可能使用 JavaScript UI 框架,因此它們?cè)诿總€(gè)框架中都只是擁有相對(duì)較低的百分比。
不過無論使用什么技術(shù),Angular 和 React 都是最受歡迎的。這也是有道理的,他們是先行者,而且背后有兩個(gè)最大和最有影響力的科技公司的支持。我們還能發(fā)現(xiàn),Angular 在 C#, Java 和 PHP(某種程度上)開發(fā)者中的受眾更多,而 React 更受 Rails,Node.js 和 Python 開發(fā)者的歡迎。
對(duì)于 Knockout.js,它主要通過 C# 開發(fā)者獲得更多的流量,因?yàn)?Knockout 也是微軟的技術(shù)。PHP 是一個(gè)有趣的案例,它是為 Web 開發(fā)而設(shè)計(jì)的,但是 PHP 開發(fā)者并沒有訪問很多關(guān)于 Angular 或 React 的問題(整體上來看),反而對(duì)于 Vue.js 問題的訪問顯得有些不成比例。
主要通過行業(yè)和地理位置(美國(guó)地區(qū))這兩個(gè)角度對(duì)最受歡迎的兩大熱門框架 React 和 Angular 進(jìn)行了分析,不妨看看數(shù)據(jù)。
最后,作者對(duì)此發(fā)表了自己的看法,他不會(huì)主張使用任何一種框架。就像對(duì)于每一項(xiàng)技術(shù)的選擇一樣,它的考慮因素不應(yīng)是“火熱程度”,而是權(quán)衡取舍和是否適合解決手頭的問題。不過另一方面,開發(fā)者社區(qū)的規(guī)模確實(shí)很重要。它有助于開源環(huán)境的繁榮,并且更容易在 Stack Overflow 以及網(wǎng)絡(luò)上找到幫助。