摘要:同比與去年同期的同比變化率。我們對調(diào)查報告進行分析數(shù)據(jù)統(tǒng)計時間與本文時間差距較遠,數(shù)據(jù)存在延后。這意味著你可以獲得語法高亮,支持以及更容易使用預(yù)處理器如或。的是一個類似語法的可選預(yù)處理器,并可在中進行編譯。
一些歷史
Angular 是基于 TypeScript 的 Javascript 框架。由 Google 進行開發(fā)和維護,它被描述為“超級厲害的 JavaScript MVW 框架”。Angular(也被稱為 “Angular 2+”,“Angular 2” 或者 “ng2”)已被重寫,是與 AngularJS(也被稱為 “Angular.js” 或 “AngularJS 1.x”)不兼容的后續(xù)版本。當 AngularJS(舊版本)最初于2010年10月發(fā)布時,仍然在修復(fù)bug,等等 —— 新的 Angular(sans JS)于 2016 年 9 月推出版本 2。最新的主版本是 4,因為版本 3 被跳過了。
React 被描述為 “用于構(gòu)建用戶界面的 JavaScript 庫”。React 最初于 2013 年 3 月發(fā)布,由 Facebook 進行開發(fā)和維護,F(xiàn)acebook 在多個頁面上使用 React 組件(但不是作為單頁應(yīng)用程序)。
Vue 是 2016 年發(fā)展最為迅速的 JS 框架之一。Vue 將自己描述為一款“用于構(gòu)建直觀,快速和組件化交互式界面的 MVVM 框架”。它于 2014 年 2 月首次由 Google 前員工 Evan You 發(fā)布。
背景對比對比 | Vue | React | Angular |
---|---|---|---|
出現(xiàn)年月 | 2014-2 | 2013-3 | 2010-10 |
框架類型 | MVVM | MVC | MVW |
開源許可 | MIT license | BSD3-license | MIT license |
MIT許可協(xié)議(The MIT License)是許多軟件許可條款中,被廣泛使用的其中一種。與其他常見的軟件許可協(xié)議(如GPL、LGPL、BSD)相比,MIT是相對寬松的軟件許可協(xié)議。
BSD 許可協(xié)議(Berkeley Software Distribution license),是自由軟件中使用最廣泛的許可協(xié)議之一。BSD 就是遵照這個許可證來發(fā)布,也因此而得名 BSD 許可協(xié)議。
MIT license 與 BSD-license 之間的區(qū)別是:MIT license 允許衍生軟件加上我們自己的名字做推廣,而 BSD license 不可以。開發(fā)對比
Vue | React | Angular | |
---|---|---|---|
開發(fā)與維護 | 獨立開發(fā)者 | ||
團隊人數(shù) | 25 | 未知 | 40 |
stars | forks | issues | updated | created | |
---|---|---|---|---|---|
angular.js | 59308 | 29000 | 487 | Dec 18, 2018 | Jan 6,2010 |
Vue | 122678 | 17540 | 230 | Dec 20, 2018 | Jul 29,2013 |
React | 117977 | 21403 | 525 | Dec 20, 2018 | May 25,2013 |
angular | 43663 | 11223 | 2618 | Dec 20, 2018 | Sep 19,2014 |
統(tǒng)計的數(shù)據(jù)有時效性,如需了解最新的數(shù)據(jù)點我
流行度對比 國內(nèi)流行度百度指數(shù)上的一個比較
搜索指數(shù):指的是關(guān)鍵詞最近一個月的總體搜索指數(shù)表現(xiàn)。
日均值:一段時間內(nèi)搜索指數(shù)日均值。
同比:與去年同期的同比變化率。
環(huán)比:與上一個相鄰時間段(即上一個7天/30天)的環(huán)比變化率。
搜索指數(shù)趨勢:互聯(lián)網(wǎng)用戶對鍵詞搜索關(guān)注程度及持續(xù)變化情況。
算法說明:以網(wǎng)民在百度的搜索量為數(shù)據(jù)基礎(chǔ),以關(guān)鍵詞為統(tǒng)計對象,科學分析并計算出各個關(guān)鍵詞在百度網(wǎng)頁搜索中搜索頻次的加權(quán)。
國外流行度npm趨勢
谷歌趨勢
熱度隨時間變化的趨勢
算法說明:數(shù)字代表相對于圖表中指定區(qū)域和指定時間內(nèi)最高點的搜索熱度。熱度最高的字詞得 100 分;熱度是前者一半的字詞得 50 分;沒有足夠數(shù)據(jù)的字詞得 0 分。
2. 按區(qū)域比較細分數(shù)據(jù)
stackoverflow
Stack Overflow 是一個與程序相關(guān)的 IT 技術(shù)問答網(wǎng)站。該網(wǎng)站擁有 400 萬用戶,每月 5.6 億的頁面瀏覽量。
我們對 Stack Overflow 2018 調(diào)查報告 進行分析(數(shù)據(jù)統(tǒng)計時間與本文時間差距較遠,數(shù)據(jù)存在延后)。
目前最流行的技術(shù)框架排名:
Angular 與 React 排名靠前,Vue 未上榜。 * 目前大家最喜愛的技術(shù)框架排名:
相對 Angular 來說,React 的表現(xiàn)很搶眼,Vue 未上榜。
statejs
statejs 網(wǎng)站使用了一套包含上百個問題的問卷調(diào)查,從超過 20000 名開發(fā)者中得出的 2018 年關(guān)于前端框架調(diào)查,結(jié)果 如下:
較多開發(fā)者想學 Vue,而 React 目前擁有最多的開發(fā)者。
總結(jié):國內(nèi) 流行 Vue,國外流行 React。
------------------------------
技術(shù)對比對比 | Vue | React | Angular |
---|---|---|---|
基于組件 | 擅長 | 擅長 | - |
依賴標準 | ES6 或 ES6 | ES6 | TypeScript |
底層技術(shù) | 單個文件(模板+腳本+樣式) | JSX | 模板 |
數(shù)據(jù)綁定 | 單/雙向綁定 | 單向綁定 | 雙向綁定 |
支持原生開發(fā) | 支持(Weex) | 支持(react-native/react-native-renderer) | 支持(NativeScript、Ionic) |
服務(wù)端渲染 | nuxt.js | next.js | Angular Universal |
瀏覽器兼容 | ie8 + | ie9 + | ie9 + |
學習曲線 | 簡單 | 中等 | 陡峭 |
基于組件:一個組件得到一個輸入,并且在一些內(nèi)部的行為/計算之后,它返回一個渲染的 UI 模板作為輸出。定義的組件可以很容易在網(wǎng)頁或其他組件中重用。
依賴標準:Vue 與 React 使用的都是 javaScript 語言標準,差別不大。Angular 是 javaScript 的超集,添加了可選的靜態(tài)類型和基于類的面向?qū)ο缶幊?;但與整個 JavaScript 語言相比,目前 TypeScript 的用戶群仍然很小。
底層技術(shù)
Vue 具有“單個文件組件”。這似乎是對于關(guān)注分離的權(quán)衡 - 模板,腳本和樣式在一個文件中,但在三個不同的有序部分中。這意味著你可以獲得語法高亮,CSS 支持以及更容易使用預(yù)處理器(如 Jade 或 SCSS)。
React 的 JSX 是一個類似 HTML 語法的可選預(yù)處理器,并可在 JavaScript 中進行編譯。因為代碼寫在同一個地方,所以可以在代碼完成和編譯時更好地檢查。如果在 JSX 中輸入錯誤時,React 將無法通過編譯,它會打印出錯的位置。
Angular 模板使用特殊的 Angular 語法(比如 ngIf 或 ngFor)來增強 HTML。雖然 React 需要 JavaScript 的知識,但 Angular 會迫使你學習 Angular 特有的語法。
數(shù)據(jù)綁定:當 UI 元素(例如,用戶輸入)被更新時,Angular 的雙向綁定會改變 model 狀態(tài)。Angular 的方式實現(xiàn)起來代碼更干凈,開發(fā)人員更容易實現(xiàn)。在 React 中實現(xiàn)該功能,必須先更新 model,然后渲染 UI 元素。React 的方式會有更好的數(shù)據(jù)總覽,因為數(shù)據(jù)只能在一個方向上流動,這樣更容易調(diào)試。
支持原生:Angular 擁有用于原生應(yīng)用的 NativeScript(由 Telerik 支持)和用于混合開發(fā)的 Ionic 框架。借助 React,你可以試試 react-native-renderer 來構(gòu)建跨平臺的 iOS 和 Android 應(yīng)用程序,或者用 react-native 開發(fā)原生 app。
Weex 允許你使用 Vue 語法開發(fā)不僅僅可以運行在瀏覽器端,還能被用于開發(fā) iOS 和 Android 上的原生應(yīng)用的組件。另一個選擇是 NativeScript-Vue,一個用 Vue.js 構(gòu)建完全原生應(yīng)用的 NativeScript 插件。
服務(wù)端渲染:Javascript 框架在客戶端上渲染頁面。這對于性能,整體用戶體驗和 SEO 是不利的。服務(wù)器端預(yù)渲染是一個好辦法。所有這三個框架都有相應(yīng)的庫來實現(xiàn)服務(wù)端渲染。React 有 next.js,Vue 有 nuxt.js,而 Angular 有...... Angular Universal。
瀏覽器兼容:
React兼容所有常用的瀏覽器,包括IE9及以上的版本。
注意:我們不支持那些不兼容ES5方法的老版瀏覽器,但如果你的應(yīng)用包含了polyfill,例如es5-shim 和 es5-sham,你可能會發(fā)現(xiàn)你的應(yīng)用仍然可以在這些瀏覽器中正常運行。如果你選擇這么干,你就只能孤軍奮戰(zhàn)了。
Vue 不支持 IE8 及以下版本,因為 Vue 使用了 IE8 無法模擬的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的瀏覽器。
學習曲線:
Angular 的學習曲線是非常陡峭的——作為一個框架,它的 API 面積比起 Vue 要大得多,你也因此需要理解更多的概念才能開始有效率地工作。當然,Angular 本身的復(fù)雜度是因為它的設(shè)計目標就是只針對大型的復(fù)雜應(yīng)用;但不可否認的是,這也使得它對于經(jīng)驗不甚豐富的開發(fā)者相當?shù)牟挥押谩?/p>
對于 React,你可能需要針對第三方庫進行大量重大決策。僅僅 React 中就有 16 種不同的 flux 軟件包來用于狀態(tài)管理可供選擇。
Vue,你只需要有良好的 HTML 和 JavaScript 基礎(chǔ)。有了這些基本的技能,你就可以非??焖俚赝ㄟ^閱讀 指南 投入開發(fā)
體積和性能 體積任何框架都不會十全十美:Angular 框架非常臃腫。gzip 文件大小為 143k,而 Vue 為 23K,React 為 43k。
為了提高性能,React 和 Vue 都使用了虛擬 DOM(Virtual DOM)。性能
Angular,React 和 Vue 性能比較(源文件)
內(nèi)存分配內(nèi)存分配(源文件)
總結(jié)一下:Vue 有著很好的性能和高深的內(nèi)存分配技巧。如果比較快慢的話,這些框架都非常接近(比如 Inferno)。請記住,性能基準只能作為考慮的附注,而不是作為判斷標準。
本文首發(fā)于github,如果對你有幫助,可以給我點個star,謝謝
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/100474.html
摘要:明明如日中天,把它與倒過來,給加點東西或可與抗衡。在之后,大版本有十數(shù)個,只有最近推的才回歸正常等后人總結(jié)歷史,無疑會把與之間的所有都稱為垃圾。讓網(wǎng)頁支持所見即得的可視化設(shè)計,是框架的最高形態(tài),以前沒有類似工具,主要因為技術(shù)做不到。 好吧,我承認我是標題黨。React 明明如日中天,把它與 Vue 倒過來,給 Vue 加點東西或可與 React 抗衡。不過,這兩年 Vue 干的正是這事...
摘要:文章內(nèi)容分兩部分前半部分為迭代器模式概念后半部分為中迭代器上半部分開始迭代器模式提供一種方法順序訪問一個聚合對象中的各個元素,而又不需要暴露該對象的內(nèi)部表示。下半部分開始的迭代器迭代器等同于遍歷器。執(zhí)行該函數(shù),會返回一個遍歷器對象。 showImg(https://segmentfault.com/img/bVbuyaZ?w=800&h=600); 文章內(nèi)容分兩部分: 前半部分為 迭...
摘要:它會檢測出最大靜態(tài)子樹就是不需要動態(tài)性的子樹并且從渲染函數(shù)中萃取出來。這樣在每次重渲染的時候,它就會直接重用完全相同的同時跳過比對。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個鏈接~手把手教你從零寫一個簡單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點和vue2+vuex2+we...
摘要:它會檢測出最大靜態(tài)子樹就是不需要動態(tài)性的子樹并且從渲染函數(shù)中萃取出來。這樣在每次重渲染的時候,它就會直接重用完全相同的同時跳過比對。需要注意的是,中的操作必須是同步的,不可以存在異步操作的情況。 新增:哈哈,最近又推出了 vue 的文章,在這里放個鏈接~手把手教你從零寫一個簡單的 VUE 感謝有人看我扯技術(shù),這篇文章主要介紹最近非?;鸬膙ue2前端框架的特點和vue2+vuex2+we...
閱讀 3440·2021-11-22 09:34
閱讀 728·2021-11-19 11:29
閱讀 1409·2019-08-30 15:43
閱讀 2291·2019-08-30 14:24
閱讀 1918·2019-08-29 17:31
閱讀 1287·2019-08-29 17:17
閱讀 2675·2019-08-29 15:38
閱讀 2849·2019-08-26 12:10