Vue與React兩個框架的區別對比

来源:https://www.cnblogs.com/kung0806/archive/2019/03/09/10500297.html
-Advertisement-
Play Games

簡單介紹 React Facebook創建的JavaScript UI框架。它支撐著包括Instagram在內的大多數Facebook網站。React與當時流行的jQuery,Backbone.js和Angular 1等框架不同,它的誕生改變了JavaScript的世界。其中最大的變化是React推 ...


image

簡單介紹

React--Facebook創建的JavaScript UI框架。它支撐著包括Instagram在內的大多數Facebook網站。React與當時流行的jQuery,Backbone.js和Angular 1等框架不同,它的誕生改變了JavaScript的世界。其中最大的變化是React推廣了Virtual DOM(虛擬DOM)並創造了新的語法——JSX,JSX允許開發者在JavaScript中書寫HTML(譯者註:即HTML in JavaScript)。

Vue致力解決的問題與React一致,但卻提供了另外一套解決方案。Vue使用模板系統(弱化的jsx),使其對現有應用的升級更加容易。這是因為模板用的就是普通的HTML,通過Vue來整合現有的系統是比較容易的,不需要整體重構。同時Vue的學習曲線相對react來說更加容易。

相似之處

React與Vue有很多相似之處,如他們都是JavaScript的UI框架,專註於創造前端的富應用。不同於早期的JavaScript框架“功能齊全”,Reat與Vue只有框架的骨架,其他的功能如路由、狀態管理等是框架分離的組件。

  • 兩者都是用於創建UI的JavaScript庫;
  • 兩者都快速輕便;
  • 都有基於組件的架構;
  • 都是用虛擬DOM;
  • 都可放入單個HTML文件中,或者成為更複雜webpack設置中的模塊;
  • 都有獨立但常用的路由器和狀態管理庫;

它們之間的最大區別是Vue通常使用HTML模板文件,而React則完全是JavaScript。Vue有雙向綁定語法糖。

不同點

在Vue組件中,有幾個觀念和React相差比較大,我覺得主要有以下這幾點:

  • Vue組件分為全局註冊和局部註冊,在react中都是通過import相應組件,然後模版中引用;

  • props是可以動態變化的,子組件也實時更新,在react中官方建議props要像純函數那樣,輸入輸出一致對應,而且不太建議通過props來更改視圖;

  • 子組件一般要顯示地調用props選項來聲明它期待獲得的數據。而在react中不必需,另兩者都有props校驗機制;

  • 每個Vue實例都實現了事件介面,方便父子組件通信,小型項目中不需要引入狀態管理機制,而react必需自己實現;

  • 使用插槽分發內容,使得可以混合父組件的內容與子組件自己的模板;

  • 多了指令系統,讓模版可以實現更豐富的功能,而React只能使用JSX語法;

  • Vue增加的語法糖computed和watch,而在React中需要自己寫一套邏輯來實現;

  • react的思路是all in js,通過js來生成html,所以設計了jsx,還有通過js來操作css,社區的styled-component、jss等;而 vue是把html,css,js組合到一起,用各自的處理方式,vue有單文件組件,可以把html、css、js寫到一個文件中,html提供了模板引擎來處理。

  • react做的事情很少,很多都交給社區去做,vue很多東西都是內置的,寫起來確實方便一些, 比如 redux的combineReducer就對應vuex的modules, 比如reselect就對應vuex的getter和vue組件的computed, vuex的mutation是直接改變的原始數據,而redux的reducer是返回一個全新的state,所以redux結合immutable來優化性能,vue不需要。

  • react是整體的思路的就是函數式,所以推崇純組件,數據不可變,單向數據流,當然需要雙向的地方也可以做到,比如結合redux-form,組件的橫向拆分一般是通過高階組件。而vue是數據可變的,雙向綁定,聲明式的寫法,vue組件的橫向拆分很多情況下用mixin。

社區活躍度

從兩者的github表現上來看

react

vue

可以看出vue的star數量已經是前端框架中最火爆的。從維護上來看,react是facebook在維護,而vue現階段雖然也有了團隊,但主要還是尤雨溪在維護貢獻代碼,並且阿裡巴巴開源的混合式框架weex也是基於vue的,所以我們相信vue未來將會得到更多的人和團隊維護。根據不完全統計,包括餓了麽、簡書、高德、稀土掘金、蘇寧易購、美團、天貓、荔枝FM、房多多、Laravel、htmlBurger等國內外知名大公司都在使用vue進行新項目的開發和舊項目的前端重構工作。

使用vue的公司

根據不完全統計,包括餓了麽、蘇寧易購、美團、天貓、Laravel、htmlBurger等國內外知名大公司都在使用vue進行新項目的開發和舊項目的前端重構工作。

使用react的公司

image

UI生態

react有material-design,螞蟻金服的ant-design等,vue有餓了麽出品的element以及iview等。

image

image

總結

Vue的優勢包括:

  • 模板和渲染函數的彈性選擇
  • 簡單的語法及項目創建
  • 更快的渲染速度和更小的體積

React的優勢包括:

  • 更適用於大型應用和更好的可測試性
  • 同時適用於Web端和原生App
  • 更大的生態圈帶來的更多支持和工具

而實際上,React和Vue都是非常優秀的框架,它們之間的相似之處多過不同之處,並且它們大部分最棒的功能是相通的:

  • 利用虛擬DOM實現快速渲染
  • 輕量級
  • 響應式組件
  • 伺服器端渲染
  • 易於集成路由工具,打包工具以及狀態管理工具
  • 優秀的支持和社區

總結比較速覽

比較表格

參考文檔


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • this 指針問題 methods與computed中的this指針 應該指向的是它們自己,可是為什麼this指針卻可以訪問data對象中的成員呢? 因為new Vue對象實例化後data中的成員和computed中的成員為實現化對象屬性了,而methods中定義的方法為實現化對象方法了。這時thi ...
  • 本文主要介紹 vue的調試工具 vue-devtools 的安裝和使用 工欲善其事, 必先利其器, 快快一起來用vue-devtools來調試開發你的vue項目吧 安裝: 1.到github下載: 2.在vue-devtools目錄下安裝依賴包 1 2 cd vue-devtools cnpm in ...
  • 這個游戲JS部分全都是用原生JS代碼寫的,加有少量的CSS3動畫,並簡單的相容了一下移動端。 ...
  • (學習筆記) 行內元素(inline)和塊級元素(block)都是display屬性的值。要知道行內元素和塊級元素的區別,首先要瞭解他們的特性。 行內元素的特性:“行內”,顧名思義,在一行之內,所以相鄰的行內元素在同一行,當他們寬度超過了容器的寬度才會自動換行。行內元素的寬度、高度、內邊距的 top ...
  • js完整代碼: Trust me!! ...
  • Cookies是一種能夠讓網站伺服器把少量數據儲存到客戶端的硬碟或記憶體,或是從客戶端的硬碟讀取數據的一種技術。jQuery是一個封裝好的JavaScript庫,使用jQuery可以極大地簡化了JavaScript編程,方便前端開發人員。使用傳統的javascript來操作cookie的話會相對比較繁 ...
  • 今天在處理程式的過程中,發現window.open方法會被瀏覽器攔截,導致無法打開新頁面,查閱相關資料後發現,主要原因是瀏覽器為了維護用戶安全和體驗,禁止在javascript中直接使用window.open(url)來打開新的鏈接,window.open(url,”_self”)改變當前的視窗是可 ...
  • 如前文 "在瀏覽器插件中讀取JSON資源文件" 末所述, 用瀏覽器插件實現了不依賴任何線上翻譯服務的英漢詞典. 由於詞典包含77萬個詞條, 插件大小也達到了13+MB. 詞典數據也包含很多常見短語: 源碼庫: "program in chinese/webextension_english_chin ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...