LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

react和vue的區(qū)別及優(yōu)缺點(diǎn)

admin
2023年7月10日 16:34 本文熱度 1017

區(qū)別:

vue是雙向綁定的,采用template;

react是單向的,采用jsx。

 

Vue的優(yōu)缺點(diǎn):

簡(jiǎn)單、快速、強(qiáng)大、對(duì)模塊友好,但不支持IE8。

 

React的優(yōu)缺點(diǎn):

速度快、跨瀏覽器兼容、模塊化;

但學(xué)習(xí)曲線陡峭,需要深入的知識(shí)來構(gòu)建應(yīng)用程序。

 

react和vue的區(qū)別

監(jiān)聽數(shù)據(jù)變化的實(shí)現(xiàn)原理不同

Vue通過 getter/setter以及一些函數(shù)的劫持,能精確知道數(shù)據(jù)變化。

React默認(rèn)是通過比較引用的方式(diff)進(jìn)行的,如果不優(yōu)化可能導(dǎo)致大量不必要的VDOM的重新渲染。為什么React不精確監(jiān)聽數(shù)據(jù)變化呢?這是因?yàn)閂ue和React設(shè)計(jì)理念上的區(qū)別,Vue使用的是可變數(shù)據(jù),而React更強(qiáng)調(diào)數(shù)據(jù)的不可變,兩者沒有好壞之分,Vue更加簡(jiǎn)單,而React構(gòu)建大型應(yīng)用的時(shí)候更加魯棒。

數(shù)據(jù)綁定

vue:

vue是雙向綁定, Vue.js 最核心的功能有兩個(gè),一是響應(yīng)式的數(shù)據(jù)綁定系統(tǒng),二是組件系統(tǒng)。

所謂雙向綁定,指的是vue實(shí)例中的data與其渲染的DOM元素的內(nèi)容保持一致,無論誰被改變,另一方會(huì)相應(yīng)的更新為相同的數(shù)據(jù)。這是通過設(shè)置屬性訪問器實(shí)現(xiàn)的。

Vue 的依賴追蹤是【原理上不支持雙向綁定,v-model 只是通過監(jiān)聽 DOM 事件實(shí)現(xiàn)的語法糖】

vue的依賴追蹤是通過 Object.defineProperty 把data對(duì)象的屬性全部轉(zhuǎn)為 getter/setter來實(shí)現(xiàn)的;

當(dāng)改變數(shù)據(jù)的某個(gè)屬性值時(shí),會(huì)觸發(fā)set函數(shù),獲取該屬性值的時(shí)候會(huì)觸發(fā)get函數(shù),通過這個(gè)特性來實(shí)現(xiàn)改變數(shù)據(jù)時(shí)改變視圖;

也就是說只有當(dāng)數(shù)據(jù)改變時(shí)才會(huì)觸發(fā)視圖的改變,反過來在操作視圖時(shí),只能通過DOM事件來改變數(shù)據(jù),再由此來改變視圖,以此來實(shí)現(xiàn)雙向綁定

 

雙向綁定是在同一個(gè)組件內(nèi),將數(shù)據(jù)和視圖綁定起來,和父子組件之間的通信并無什么關(guān)聯(lián);

組件之間的通信采用單向數(shù)據(jù)流是為了組件間更好的解耦,在開發(fā)中可能有多個(gè)子組件依賴于父組件的某個(gè)數(shù)據(jù),假如子組件可以修改父組件數(shù)據(jù)的話,一個(gè)子組件變化會(huì)引發(fā)所有依賴這個(gè)數(shù)據(jù)的子組件發(fā)生變化,所以vue不推薦子組件修改父組件的數(shù)據(jù),直接修改props會(huì)拋出警告

思想是響應(yīng)式的,也就是基于是數(shù)據(jù)可變的,通過對(duì)每一個(gè)屬性建立Watcher來監(jiān)聽, 當(dāng)屬性變化的時(shí)候,響應(yīng)式的更新對(duì)應(yīng)的虛擬dom。

 

react:

react是單向數(shù)據(jù)流;

react中通過將state(Model層)與View層數(shù)據(jù)進(jìn)行雙向綁定達(dá)數(shù)據(jù)的實(shí)時(shí)更新變化,

具體來說就是在View層直接寫JS代碼Model層中的數(shù)據(jù)拿過來渲染,一旦像表單操作、觸發(fā)事件、ajax請(qǐng)求等觸發(fā)數(shù)據(jù)變化,則進(jìn)行雙同步。

推崇結(jié)合immutable來實(shí)現(xiàn)數(shù)據(jù)不可變。

可以看看:https://www.cnblogs.com/yangyangxxb/p/10104817.html

react在setState之后會(huì)重新走渲染的流程,如果shouldComponentupdate返回的是true,就繼續(xù)渲染, 如果返回了false,就不會(huì)重新渲染,PureComponent就是重寫了shouldComponentupdate, 然后在里面作了props和state的淺層對(duì)比;

 

組件通信的不同

 

Vue中有三種方式可以實(shí)現(xiàn)組件通信:

  • 父組件通過props向子組件傳遞數(shù)據(jù)或者回調(diào),雖然可以傳遞回調(diào),但是我們一般只傳數(shù)據(jù);

  • 子組件通過事件向父組件發(fā)送消息;

  • 通過V2.2.0中新增的provide/inject來實(shí)現(xiàn)父組件向子組件注入數(shù)據(jù),可以跨越多個(gè)層級(jí)。

React中也有對(duì)應(yīng)的三種方式:

  • 父組件通過props可以向子組件傳遞數(shù)據(jù)或者回調(diào);

  • 可以通過 context 進(jìn)行跨層級(jí)的通信,這其實(shí)和 provide/inject 起到的作用差不多。

可以看到,React 本身并不支持自定義事件,而Vue中子組件向父組件傳遞消息有兩種方式:事件和回調(diào)函數(shù),但Vue更傾向于使用事件。在React中我們都是使用回調(diào)函數(shù)的,這可能是他們二者最大的區(qū)別。

 

框架本質(zhì)不同

Vue本質(zhì)是MVVM框架,由MVC發(fā)展而來;

React是前端組件化框架,由后端組件化發(fā)展而來。

Vue.js的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1. 簡(jiǎn)單:官方文檔很清晰,比 Angular 簡(jiǎn)單易學(xué)。

2. 快速:異步批處理方式更新 DOM。

3. 組合:用解耦的、可復(fù)用的組件組合你的應(yīng)用程序。

4. 緊湊:~18kb min+gzip,且無依賴。

5. 強(qiáng)大:表達(dá)式 & 無需聲明依賴的可推導(dǎo)屬性(computed properties)。

6. 對(duì)模塊友好:可以通過 NPM、Bower 或 Duo 安裝,不強(qiáng)迫你所有的代碼都遵循 Angular 的各種規(guī)定,使用場(chǎng)景更加靈活。

缺點(diǎn):

1. 新生兒:Vue.js是一個(gè)新的項(xiàng)目,沒有angular那么成熟。

2. 影響度不是很大:google了一下,有關(guān)于Vue.js多樣性或者說豐富性少于其他一些有名的庫(kù)。

3. 不支持IE8:

React的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1. 速度快:在UI渲染過程中,React通過在虛擬DOM中的微操作來實(shí)現(xiàn)對(duì)實(shí)際DOM的局部更新。

2. 跨瀏覽器兼容:虛擬DOM幫助我們解決了跨瀏覽器問題,它為我們提供了標(biāo)準(zhǔn)化的API,甚至在IE8中都是沒問題的。

3. 模塊化:為你程序編寫?yīng)毩⒌哪K化UI組件,這樣當(dāng)某個(gè)或某些組件出現(xiàn)問題是,可以方便地進(jìn)行隔離。

4. 單向數(shù)據(jù)流:Flux是一個(gè)用于在Javascript應(yīng)用中創(chuàng)建單向數(shù)據(jù)層的架構(gòu),它隨著React視圖庫(kù)的開發(fā)而被Facebook概念化。

5. 同構(gòu)、純粹的javascript:因?yàn)樗阉饕娴呐老x程序依賴的是服務(wù)端響應(yīng)而不是Javascript的執(zhí)行,預(yù)渲染你的應(yīng)用有助于搜索引擎優(yōu)化。

6. 兼容性好:比如使用RequireJS來加載和打包,而Browserify和Webpack適用于構(gòu)建大型應(yīng)用。它們使得那些艱難的任務(wù)不再讓人望而生畏。

缺點(diǎn):

React本身只是一個(gè)V而已,并不是一個(gè)完整的框架,所以如果是大型項(xiàng)目想要一套完整的框架的話,基本都需要加上ReactRouter和Flux才能寫大型應(yīng)用。

陡峭的學(xué)習(xí)曲線:由于復(fù)雜的設(shè)置過程,屬性,功能和結(jié)構(gòu),它需要深入的知識(shí)來構(gòu)建應(yīng)用程序。


該文章在 2023/7/10 18:07:25 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩欧美精品国产亚洲综合 | 日本人妖一区二区久久网 | 亚洲精品乱码久久久久久按摩 | 日本亚洲色欧美 | 日日狠狠久久偷偷色 | 这里只有精品久久 |