成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Vue和React有哪些區別

瀏覽:7日期:2022-11-22 17:40:40

一、監聽數據變化的實現原理不同

Vue通過 getter/setter以及一些函數的劫持,能精確知道數據變化 ,不需要特別的優化就能達到很好的性能 React默認是通過 比較引用 的方式進行的,如果不優化( pureComponent/shouldComponentUpdate )可能導致大量不必要的VDOM得重新渲染

為什么 React 不精確監聽數據變化呢 ?這是因為 Vue 和 React 設計理念上的區別, Vue 使用的是可變數據,而React更強調數據的不可變。 所以應該說沒有好壞之分,Vue更加簡單,而React構建大型應用的時候更加魯棒。

二、數據流的不同

Vue和React有哪些區別

大家都知道Vue中默認是支持雙向綁定的。在Vue1.0中我們可以實現兩種雙向綁定:

propsv-model 在 Vue2.x 中去掉了第一種, 也就是父子組件之間不能雙向綁定了(但是提供了一個語法糖自動幫你通過事件的方式修改),并且 Vue2.x 已經不鼓勵組件對自己的 props 進行任何修改了 。 然而 React從誕生之初就不支持雙向綁定,React一直提倡的是單向數據流,他稱之為 onChange/setState() 模式 。不過由于我們一般都會用 Vuex 以及 Redux 等單向數據流的狀態管理框架,因此很多時候我們感受不到這一點的區別了。

三、HOC和mixins

在Vue中我們組合不同功能的方式是通過mixin,而在React中我們通過HOC(高階組件)。React 最早也是使用 mixins 的,不過后來他們覺得這種方式對組件侵入太強會導致很多問題,就棄用了 mixinx 轉而使用 HoC,關于mixin究竟哪里不好,可以參考React官方的這篇文章 Mixins Considered Harmful。而 Vue 一直是使用 mixin 來實現的。

但是為什么Vue不采用HOC的方式來實現呢?

因為 高階組件本質就是高階函數,React的組件是一個純粹的函數,所以高階函數對React來說非常簡單 。但是Vue就不行了, Vue中組件是一個被包裝的函數,并不簡單的就是我們定義組件的時候傳入的對象或者函數 。比如我們定義的模板怎么被編譯的?比如聲明的props怎么接收到的?這些都是vue創建組件實例的時候隱式干的事。由于vue默默幫我們做了這么多事,所以我們自己如果直接把組件的聲明包裝一下,返回一個高階組件,那么這個被包裝的組件就無法正常工作了。

四、組件通信的區別

Vue和React有哪些區別

在Vue 中有三種方式可以實現組件通信:

父組件通過 props 向子組件傳遞數據或者回調,雖然可以傳遞回調,但是我們一般只傳數據,而通過 事件的機制來處理子組件向父組件的通信 子組件通過 事件 向父組件發送消息 通過 V2.2.0 中新增的 provide/inject 來實現父組件向子組件注入數據,可以跨越多個層級。

在React中,也有對應的三種方式:

父組件通過 props 可以向子組件傳遞數據或者回調 可以通過 context 進行跨層級的通信 ,這其實和 provide/inject 起到的作用差不多。

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

五、渲染模版的不同

在表層上, 模板的語法不同

React是通過JSX渲染模版 而Vue是通過一種拓展的HTML語法進行渲染

但其實這只是表面現象,畢竟 React并不必須依賴JSX 。在深層上,模板的原理不同,這才是他們的本質區別:

React是在組件JS代碼中,通過 原生JS實現 模板中的常見語法,比如插值,條件,循環等,都是通過JS語法實現的 Vue是在和組件JS代碼分離的單獨的模板中, 通過指令來實現的 ,比如 條件語句就需要 v-if 來實現

react中 render函數是支持閉包特性的,所以我們import的組件在render中可以直接調用 。但是在Vue中, 由于模板中使用的數據都必須掛在 this 上進行一次中轉,所以我們import 一個組件完了之后,還需要在 components 中再聲明下,這樣顯然是很奇怪但又不得不這樣的做法。

六、Vuex和Redux的區別

從表面上來說, store 注入和使用方式有一些區別 。在 Vuex 中, $store 被直接注入到了組件實例中 ,因此可以比較靈活的使用:

使用dispatch和commit提交更新 通過mapState或者直接通過this.$store來讀取數據

在 Redux 中, 我們每一個組件都需要顯示的用 connect 把需要的 props 和 dispatch 連接起來。

另外 Vuex 更加靈活一些, 組件中既可以 dispatch action 也可以 commit updates ,而 Redux 中只能進行 dispatch,并不能直接調用 reducer 進行修改。

從實現原理上來說,最大的區別是兩點:

Redux 使用的是不可變數據,而Vuex的數據是可變的。 Redux每次都是用新的state替換舊的state,而Vuex是直接修改 Redux 在檢測數據變化的時候,是通過 diff 的方式比較差異的,而Vuex其實和Vue的原理一樣,是通過 getter/setter來比較的(如果看Vuex源碼會知道,其實他內部直接創建一個Vue實例用來跟蹤數據變化)

七、diff算法不同

兩者流程思維上是類似的,都是基于兩個假設(使得算法復雜度降為O(n)):

不同的組件產生不同的 DOM 結構。當type不相同時,對應DOM操作就是直接銷毀老的DOM,創建新的DOM。 同一層次的一組子節點,可以通過唯一的 key 區分。

但兩者源碼實現上有區別:

Vue基于snabbdom庫,它有較好的速度以及模塊機制。 Vue Diff使用雙向鏈表,邊對比,邊更新DOM 。 React主要使用 diff隊列保存需要更新哪些DOM,得到patch樹,再統一操作批量更新DOM。

Vue和React有哪些區別

八、事件機制不同

Vue

Vue原生事件使用 標準Web事件 Vue組件 自定義事件機制,是父子組件通信基礎 Vue合理利用了snabbdom庫的模塊插件

React

React原生事件被包裝,所有事件都冒泡到頂層document監聽,然后在這里合成事件下發 。基于這套,可以跨端使用事件機制,而不是和Web DOM強綁定。 React組件上無事件,父子組件通信使用props

以上就是Vue和React有哪些區別的詳細內容,更多關于Vue和React的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
91香蕉国产在线观看软件| 国产日韩欧美激情| 亚洲精品一区二区三区福利| 精久久久久久久久久久| 中文一区在线| 国产精品伦理在线| 欧美fxxxxxx另类| 久久亚洲综合av| 成人精品视频一区二区三区| 欧美精品日韩精品| 久久99国产精品免费| 91福利小视频| 日日嗨av一区二区三区四区| 一区二区三区欧美在线| 中文字幕不卡一区| 欧美日一区二区在线观看| 久久久99免费| 99麻豆久久久国产精品免费优播| 欧美va天堂va视频va在线| 国产一区二区三区最好精华液| 欧美日韩一区国产| 激情图片小说一区| 欧美美女一区二区| 国产在线观看免费一区| 欧美日韩第一区日日骚| 韩国v欧美v日本v亚洲v| 欧美三级三级三级爽爽爽| 亚洲男人的天堂一区二区| 国语精品中文字幕| 国产精品网友自拍| 欧美午夜一区| 国产精品你懂的在线欣赏| 国产精品国产精品| 亚洲欧洲日韩女同| 国产精品资源在线观看| 欧美日韩电影一区| 国产乱对白刺激视频不卡| 欧美丰满少妇xxxbbb| 国产精品白丝av| 欧美成人一区二区| 99久久免费视频.com| 2023国产一二三区日本精品2022| 成人黄色一级视频| 日韩一区二区在线观看视频| 国产麻豆成人传媒免费观看| 91精品综合久久久久久| 成人激情校园春色| 国产日韩av一区| 欧美成人蜜桃| 久久久久国色av免费看影院| 99精品国产视频| 国产午夜亚洲精品不卡| 国内激情久久| 亚洲欧美日本在线| 亚洲综合日本| 青青国产91久久久久久| 欧美性三三影院| 国产一区二区毛片| 久久免费午夜影院| 亚洲精品一级| 免费黄网站欧美| 日韩精品资源二区在线| 欧美网站在线| 日一区二区三区| 欧美日本一区二区三区| voyeur盗摄精品| 中文字幕一区二区日韩精品绯色| 色伊人久久综合中文字幕| 国产69精品久久久久777| 国产偷国产偷精品高清尤物| 亚洲人人精品| 免费在线观看视频一区| wwww国产精品欧美| 亚洲免费影视| 成人a区在线观看| 亚洲最新视频在线观看| 91精品国产综合久久久久久久 | 成人免费视频网站在线观看| 亚洲国产岛国毛片在线| 久久一区激情| 成人av网址在线观看| 一区二区三区四区在线| 欧美日韩成人激情| 国产综合欧美| 毛片不卡一区二区| 久久久www成人免费无遮挡大片| 国产精品尤物| 国产精品自拍在线| 一区二区三区四区激情| 5858s免费视频成人| 亚洲婷婷在线| 免费观看91视频大全| 欧美成人精品福利| 一区二区三区四区五区精品| 国产精品一区二区久激情瑜伽 | 亚洲视频每日更新| 欧美天堂一区二区三区| 欧美日韩在线一区二区三区| 美女视频第一区二区三区免费观看网站 | 91精品国产综合久久香蕉麻豆 | 久久99热99| 国产精品视频线看| 欧美在线观看禁18| 欧美日韩一区二区国产| 日韩av电影天堂| 国产亚洲va综合人人澡精品| 色一情一乱一乱一91av| 午夜精品剧场| 国产麻豆精品在线| 亚洲人妖av一区二区| 欧美一区二区精品久久911| 99在线热播精品免费99热| 国产精品夜夜嗨| 亚洲一区二区三区视频在线| www日韩大片| 91福利国产精品| 欧美日本韩国在线| 久久成人麻豆午夜电影| 亚洲人成精品久久久久| 日韩视频在线观看一区二区| 久久久久久一区| 欧美连裤袜在线视频| 精品一区中文字幕| 亚洲欧美日韩国产中文在线| 91精品啪在线观看国产60岁| 国产精品一区二区在线观看| 欧美一区二区三区免费看| 久久99精品一区二区三区三区| 亚洲蜜桃精久久久久久久| 91精品黄色片免费大全| 国产乱码精品| 99久久婷婷国产综合精品电影| 蜜乳av一区二区三区| 亚洲免费在线视频| 精品久久一区二区三区| 欧美视频一区二区三区四区 | 国产91精品在线观看| 亚洲第一主播视频| 久久久久久黄色| 欧美日韩中字一区| 一区二区三区四区五区在线| 99这里只有久久精品视频| 麻豆精品视频在线观看视频| 亚洲激情校园春色| 国产欧美在线观看一区| 欧美精品一卡二卡| 性感少妇一区| 亚洲国产精品久久久久婷婷老年| 91在线精品一区二区三区| 韩国精品在线观看| 日韩在线播放一区二区| 成人免费在线视频观看| xvideos.蜜桃一区二区| 欧美精品粉嫩高潮一区二区| 久久久久久亚洲精品杨幂换脸| 日韩亚洲视频| 91蜜桃免费观看视频| 国产精品一二三四| 免费av成人在线| 亚洲二区在线观看| 亚洲色图视频免费播放| 久久天堂av综合合色蜜桃网| 欧美日韩国产系列| 一本久久精品一区二区| 亚洲毛片播放| 在线免费观看一区二区三区| 99视频精品全部免费在线| 国产一区日韩二区欧美三区| 麻豆成人av在线| 无码av中文一区二区三区桃花岛| 亚洲欧美国产77777| 中文字幕中文字幕在线一区| 久久精品人人做| 精品成人在线观看| 欧美一级片在线看| 日韩欧美国产系列| 日韩欧美卡一卡二| 69堂国产成人免费视频| 欧美日韩另类一区| 日本高清不卡aⅴ免费网站| 久久野战av| 小嫩嫩精品导航| 日韩午夜黄色| 亚洲精品男同| 夜久久久久久| 国产亚洲毛片在线| 国产精品日本| 老鸭窝91久久精品色噜噜导演| 国产精品三上| 久久国产高清| 色综合久久88色综合天天6| 久久久7777| 色偷偷久久一区二区三区| 男人的天堂成人在线| 狼狼综合久久久久综合网| 久久国产一二区| 91福利精品第一导航| 欧美性大战久久久| 欧美手机在线视频| 91精品免费观看|