1. 程式人生 > >JavaScript 開發框架橫向比對(Vue、React 和 Angular)

JavaScript 開發框架橫向比對(Vue、React 和 Angular)

1 背景比對

比對 Vue React Angular
出現年月 2013-7 2013-3 2010-1
框架型別 MVVM MVC MVW
開源許可 MIT license BSD3-license MIT license
  • MIT license 與 BSD-license 之間的區別是:MIT license 允許衍生軟體加上我們自己的名字做推廣,而 BSD license 不可以。
  • MVVM(Model-View-ViewModel):將其中的View 的狀態和行為抽象化,分開了檢視 UI 與業務邏輯。
  • MVW(Model-View-Whatever):不限控制層。

Angular 出現最早,Vue 相對來說最新。

2 開發比對

比對 Vue React Angular
開發與維護 尤雨溪(Google前員工) Facebook Google
團隊人數 16 未知 36
Github star 95284 96651 58492
Github 程式碼貢獻者人數 190 1184 635
日評星數(最近一年) 111.8 80.2 33.5

Github star 與 Github 程式碼貢獻者數字統計於 2018-5-25。

最近一年,從 npm 伺服器上的下載量趨勢

React 與 Vue 在標星數上差不多,而 React 程式碼社群最為活躍。

3 流行度比對

3.1 國內流行度

我們在百度趨勢中比較這三大框架。

1、搜尋指數

搜尋指數指的是關鍵詞最近一個月的總體搜尋指數表現。

  • 日均值:一段時間內搜尋指數日均值。
  • 同比:與去年同期的同比變化率。
  • 環比:與上一個相鄰時間段(即上一個7天/30天)的環比變化率。

2、搜尋指數趨勢

搜尋指數趨勢:網際網路使用者對鍵詞搜尋關注程度及持續變化情況。

  • 演算法說明:以網民在百度的搜尋量為資料基礎,以關鍵詞為統計物件,科學分析並計算出各個關鍵詞在百度網頁搜尋中搜索頻次的加權。

3.2 國外流行度

因為 Google 不可用(你懂的),所以我們通過其它知名的網站來做比較。

3.2.1 stackoverflow

Stack Overflow 是一個與程式相關的 IT 技術問答網站。該網站擁有 400 萬用戶,每月 5.6 億的頁面瀏覽量。

1、目前最流行的技術框架排名:
image.png

Angular 與 React 排名靠前,Vue 未上榜。

2、目前大家最喜愛的技術框架排名:

相對 Angular 來說,React 的表現很搶眼,Vue 未上榜。

3.2.2 statejs

statejs 網站使用了一套包含上百個問題的問卷調查,從超過 28000 名開發者中得出的 2017 年關於前端框架調查,結果 如下:

很多開發者想學 Vue,而 React 擁有最多的開發者。

國內流行 Vue,國外流行 React。

4 技術比對

比對 Vue React Angular
基於元件 擅長 擅長 -
依賴標準 ES5 或 ES6 ES6 TypeScript
底層技術 單個檔案(模板 + 指令碼 +樣式) JSX 模板
資料繫結 單/雙向繫結 單向繫結 雙向繫結
支援原生開發 支援(Weex ) 支援(react-native/react-native-renderer) 支援(NativeScript、Ionic)
服務端預渲染 nuxt.js next.js Angular Universal
學習曲線 簡單 中等 陡峭

1、基於元件:一個元件得到一個輸入,並且在一些內部的行為/計算之後,它返回一個渲染的 UI 模板作為輸出。定義的元件可以很容易在網頁或其他元件中重用。

2、 依賴標準:Vue 與 React 使用的都是 javaScript 語言標準,差別不大。Angular 是 javaScript 的超集,添加了可選的靜態型別和基於類的面向物件程式設計;但與整個 JavaScript 語言相比,目前 TypeScript 的使用者群仍然很小。

3、底層技術

  • Vue 把模板,指令碼和樣式定義在一個檔案中,這意味著可以獲得語法高亮,CSS 支援以及更容易使用前處理器(如 Jade 或 SCSS)。
  • React 的 JSX 是一個類似 HTML 語法的可選前處理器,並可在 JavaScript 中進行編譯。因為程式碼寫在同一個地方,所以可以在程式碼完成和編譯時更好地檢查。如果在 JSX 中輸入錯誤時,React 將無法通過編譯,它會打印出錯的位置。
  • Angular 2 在執行時會靜默失敗。它的模板使用特殊的 Angular 語法來增強 HTML。雖然 React 需要 JavaScript 的知識,但 Angular 需要學習 Angular 特有的語法。

4、資料繫結

當 UI 元素(例如,使用者輸入)被更新時,Angular 的雙向繫結會改變 model 狀態。Angular 的方式實現起來程式碼更乾淨,開發人員更容易實現。在 React 中實現該功能,必須先更新 model,然後渲染 UI 元素。React 的方式會有更好的資料總覽,因為資料只能在一個方向上流動,這樣更容易除錯。

效能方面:

記憶體方面:

Vue 有著良好的效能和不錯的記憶體分配技巧,但如果比較快慢的話,這些框架都非常接近。注意:效能基準只作參考,不是判斷標準。

6 服務端預渲染

伺服器端預渲染有助於提升效能,整體使用者體驗和 SEO。

7 學習曲線

Angular 的學習曲線陡峭。即使對 Javascript 有深入的瞭解,也需要了解框架的底層原理。

React 可能需要針對第三方庫進行大量重大決策,比如狀態管理就有 16 種不同的 flux 包供選擇。

Vue 學習起來很容易。沒有經驗的 Javascript 開發者或者在過去幾年中主要使用 jQuery 開發者,考慮使用 Vue。Vue 看起來更像是簡單的 Javascript。

總結

Vue 優點:
* 平緩的學習曲線。
* 乾淨的程式碼。
* 輕量級的框架。

React 優點:
* 靈活。
* 擁有大型的技術生態系統。
* 良好的元件化設計。

Angular 優點:
* 基於 TypeScript。
* 面向物件程式設計。

建議:
1. 小型、業務簡單的專案建議使用 Vue 框架。
2. 大型、業務複雜的專案建議使用 React 框架。