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