新的 JavaScript UI 框架和庫似乎一直都在不停地發佈。 每隔六個月, 我們就會看到一個全新的框架聲稱自己已徹底改變了 UI 的發展, 然後成千上萬的開發者在自己的項目中使用它們, 寫博客分享使用心得, 在 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 框架的使用似乎有兩個主要階段。 隨著框架越來越受歡迎,
通過程式設計語言和技術進行分析
開發者使用某個特定的前端框架或其他框架都會有各種各樣的理由, 主要使用某種程式設計語言或技術的開發者可能更傾向於選擇某個 UI 框架。
根據開發者最常訪問的標籤將他們劃分成不同的組, 通過進行分組, 檢查每個組流向這些框架的流量百分比。
明顯可以看到, 使用 TypeScript 和 CSS 的開發者對 JavaScript 框架流量的貢獻都比較高。
這次分析也包含了對 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 以及網路上找到説明。
不過無論使用什麼技術,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 以及網路上找到説明。