电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Vue和React有哪些區(qū)別

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

一、監(jiān)聽數據變化的實現原理不同

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

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

二、數據流的不同

Vue和React有哪些區(qū)別

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

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

三、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創(chuàng)建組件實例的時候隱式干的事。由于vue默默幫我們做了這么多事,所以我們自己如果直接把組件的聲明包裝一下,返回一個高階組件,那么這個被包裝的組件就無法正常工作了。

四、組件通信的區(qū)別

Vue和React有哪些區(qū)別

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

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

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

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

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

五、渲染模版的不同

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

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

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

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

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

六、Vuex和Redux的區(qū)別

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

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

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

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

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

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

七、diff算法不同

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

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

但兩者源碼實現上有區(qū)別:

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

Vue和React有哪些區(qū)別

八、事件機制不同

Vue

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

React

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

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

標簽: Vue
相關文章:
主站蜘蛛池模板: 灌装封尾机_胶水灌装机_软管灌装封尾机_无锡和博自动化机械制造有限公司 | 精密冲床,高速冲床等冲压设备生产商-常州晋志德压力机厂 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 建筑资质代办_工程施工资质办理_资质代办公司_北京众聚企服 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 新能源汽车电机定转子合装机 - 电机维修设备 - 睿望达 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 宝元数控系统|对刀仪厂家|东莞机器人控制系统|东莞安川伺服-【鑫天驰智能科技】 | LED投光灯-工矿灯-led路灯头-工业灯具 - 山东普瑞斯照明科技有限公司 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 大白菜官网,大白菜winpe,大白菜U盘装系统, u盘启动盘制作工具 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 公交驾校-北京公交驾校欢迎您! 工作心得_读书心得_学习心得_找心得体会范文就上学道文库 | 真空包装机-诸城市坤泰食品机械有限公司 | 充气膜专家-气膜馆-PTFE膜结构-ETFE膜结构-商业街膜结构-奥克金鼎 | YT保温材料_YT无机保温砂浆_外墙保温材料_南阳银通节能建材高新技术开发有限公司 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | 安平县鑫川金属丝网制品有限公司,防风抑尘网,单峰防风抑尘,不锈钢防风抑尘网,铝板防风抑尘网,镀铝锌防风抑尘网 | 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 森旺-A级防火板_石英纤维板_不燃抗菌板装饰板_医疗板 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 智慧养老_居家养老_社区养老_杰佳通 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 灌装封尾机_胶水灌装机_软管灌装封尾机_无锡和博自动化机械制造有限公司 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 机制砂选粉机_砂石选粉机厂家-盐城市助成粉磨科技有限公司 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 建筑资质代办-建筑企业资质代办机构-建筑资质代办公司 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 真空乳化机-灌装封尾机-首页-温州精灌 | 杭州可当科技有限公司—流量卡_随身WiFi_AI摄像头一站式解决方案 |