一文总结Vue和React的异同vue.js

Vue和React实现原理和流程基本一致,都是使用VirtualDOM+Diff算法。不管是Vue的template模板+optionsapi写法,还是React的Class或者Function(js的class写法也是function函数的一种)写法,底层最终都是为了生成render函数,render函数执行返回VNode(虚拟DOM的数据结构,本质上是棵树)。当每一次UI更新时,总会根据render重新生成最新的VNode,然后跟以前缓存起来老的VNode进行比对,再使用Diff算法(框架核心)去真正更新真实DOM(虚拟DOM是JS对象结构,同样在JS引擎中,而真实DOM在浏览器渲染引擎中,所以操作虚拟DOM比操作真实DOM开销要小的多)。Vue和React通用流程:vuetemplate/reactjsx->render函数->生成VNode->当有变化时,新老VNodediff->diff算法对比,并真正去更新真实DOM。核心还是VirtualDOM,为什么Vue和React都选择VirtualDOM(React首创VDOM,Vue2.0开始引入VDOM)?,个人认为主要有以下几点:

Vue早期定位是尽可能的降低前端开发的门槛(这跟Vue作者是独立开发者也有关系)。所以Vue推崇灵活易用(渐进式开发体验),数据可变,双向数据绑定(依赖收集)。

Vue推崇template(简单易懂,从传统前端转过来易于理解)、单文件vue。而且虽然Vue2.0以后使用了VirtualDOM,使得Vue也可以使用JSX(bebel工具转换支持),但Vue官方依然首先推荐template,这跟Vue的核心思想和定位有一定关系。

React推崇JSX、HOC、allinjs。

Vue定位简单易上手,基于template模板+optionsAPI,所以不可避免的有较多的概念和api。比如template模板中需要理解slot、filter、指令等概念和api,optionsAPI中需要理解watch、computed(依赖收集)等概念和api。React本质上核心只有一个VirtualDOM+Diff算法,所以API非常少,知道setState就能开始开发了。

由于Vue定义简单易上手,能快速解决问题,所以很多常见的解决方案,是Vue官方主导开发和维护。比如状态管理库Vuex、路由库Vue-Router、脚手架Vue-CLI、Vutur工具等。属于那种大包大揽,遇到某类通用问题,只需要使用官方给出的解决方案即可。

核心思想不同,决定了Vue和React未来不管怎么升级变化,Vue和React考虑的基本盘不变。Vue依然会定位简单易上手(渐进式开发),依然是考虑通过依赖收集来实现数据可变。这点从Vue3核心更新内容可以看到:template语法基本不变、optionsapi只增加了setup选项(compositionapi)、基于依赖收集(Proxy)的数据可变。更多Vue3具体更新内容可看笔者总结Vue3设计思想(opensnewwindow)或者尤雨溪-聊聊Vue.js3.0Beta官方直播(opensnewwindow)。React的函数式编程这个基本盘不会变。React核心思想,是把UI作为BasicType,比如String、Array类型,然后经过render处理,转换为另外一个value(纯函数)。从ReactHooks可以看出,React团队致力于组件函数式编程,(纯组件,无class组件),尽量减少副作用(减少this,this会引起副作用)。

Vue源码实现是把options挂载到Vue核心类上,然后再newVue({options})拿到实例(vue组件的script导出的是一个挂满options的纯对象而已)。所以optionsapi中的this指向内部Vue实例,对用户是不透明的,所以需要文档去说明this.slot、this.slot、this.slot、this.xxx这些api。另外Vue插件都是基于Vue原型类基础之上建立的,这也是Vue插件使用Vue.install的原因,因为要确保第三方库的Vue和当前应用的Vue对象是同一个。

React内部实现比较简单,直接定义render函数以生成VNode,而React内部使用了四大组件类包装VNode,不同类型的VNode使用相应的组件类处理,职责划分清晰明了(后面的Diff算法也非常清晰)。React类组件都是继承自React.Component类,其this指向用户自定义的类,对用户来说是透明的。

Vue

Vue依赖收集,自动优化,数据可变。Vue递归监听data的所有属性,直接修改。当数据改变时,自动找到引用组件重新渲染。

React

React基于状态机,手动优化,数据不可变,需要setState驱动新的State替换老的State。当数据改变时,以组件为根目录,默认全部重新渲染

两者流程思维上是类似的,都是基于两个假设(使得算法复杂度降为O(n)):

但两者源码实现上有区别:Vue基于snabbdom库,它有较好的速度以及模块机制。VueDiff使用双向链表,边对比,边更新DOM。React主要使用diff队列保存需要更新哪些DOM,得到patch树,再统一操作批量更新DOM。

THE END
1.同的笔顺笔画数:6拼音:tòng,tóng部首:口同,合会也。——《说文》 同重体合类。——《墨子·经上》 同人亲也。——《易·杂卦》 六曰同衣服。——《周礼·大司徒》 又如:云同(云彩聚集);同天(共存于人世间);同合(使相一致;融会);同流(诸水合流) 相同,一样,共同(侧重于同样,齐一)〖bethesameas〗 http://www1.zhihuishan.com/bishun-view-3770.html
2.同的笔顺,“同”字的笔画顺序“同”字共“6画”,部首“冂”,读音“tóng/tòng”。同的笔顺:竖、横折钩、横、竖、横折、横。 “同”笔顺演示 笔画顺序:竖、横折钩、横、竖、横折、横。 书写提示:在书写“同”时,外框端正,宽窄适中,上下等宽,左短右长。被包部分居中靠上,大小适中。 http://hanchacha.com/bishun/tong2-0393640.html
3.《同》字笔画笔顺笔划同,笔画,笔顺,写法https://bihua.bmcx.com/e5908c__bihuachaxun/
4.同字的笔画同的笔顺怎么写同字的笔顺、笔画、写法,同的笔顺是什么,同怎么写好看https://zidian.yw11.com/bishun/%E5%90%8C
5.同笔画同笔顺同笔画,同笔顺是查字典笔画网提供同字笔画查询,同字笔顺,同字的正确写法工具,同字部首,读音.帮您纠正汉字书写的笔顺笔画。所有的汉字笔画大全都在查字典网,欢迎查询https://www.chazidian.com/r_zi_zd540C/bishun/
6.同的笔顺,同的笔画怎么写,笔画顺序详解汉字笔顺大全同的笔画写法同的意思解释同 tóng 〈动〉 (会意。从冃,从口。冃( mào),重复。本义:聚集) 同本义 [converge] 同,合会也。——《说文》 同重体合类。——《墨子·经上》 同人亲也。——《易·杂卦》 六曰同衣服。——《周礼·大司徒》 又如:云同(云彩聚集);同天(共存于人世间);同合(使相一致https://www.youxiaow.com/bishun/540C.html
7.同笔顺同的笔顺笔画写法部首同的笔顺、笔画、写法、部首 同笔顺、写法:同,拼音:tóng、tòng,笔画数:6画,部首:冂。中国一级汉字,编号427。 ■ 基本字义 ? 同 tóng ㄊㄨㄥˊ ? 一样,没有差异;相同。同一(a.一致,统一;b.共同的一个或一种)。同侪(同辈)。同庚(同岁)。同年。同胞。同人(a.在同一单位工作的人;b.同行业的人https://bajiu.cn/zidian/?bs=3770
8.同字楷书写法同楷书怎么写好看同书法图片同怎么写好看,同毛笔怎么写,同书法图片,同名家书法,同草书书法欣赏,同草书书法字帖,同的行书写法,同的草书写法,同的楷书写法,同的隶书写法。https://app.6z6z.com/kaishu/1362145-3.html
9.书法楷书《同》字的写法曲风/流行音乐情感/伤感东亚书法01:28跌落“神坛”的庞中华,硬笔界的佼佼者,为什么会消失?过时了? 01:52名不虚传!朱自清的书法果然与众不同!草草见真章 01:24交大老师“火”得一塌糊涂!用毛笔书写的字,让人叹为观止 01:08赵孟頫毛笔书法楷书《梁》字的写法 01:58毛笔书法行草书《最》字的写法 02:06毛笔书法楷书《最》字的写法https://www.163.com/v/video/VU1LQT79E.html
10.结婚喜帖内容怎么填写婚宴请帖模板范文结婚请帖的写法1.根据身份不同写法分为3种: (1)新人身份宴请 这种方法一般都是用于自已的朋友,同学,同事,都是平辈或平级以内的亲友们比较适合,在写法上也 不必很严紧,只要能清楚准确地表达,不搞乱对象和混乱送的称呼就行了。 (2)新郎父母身份宴请 是比较常用的写法,大多数的新郎都是以父亲的立场去宴请比自已高的长辈或上级https://www.wed114.cn/wiki/article_14327.html
11.同字的软笔写法写法字体分类发现字体最后更新: 2024-12-12 共 7个字体 简介: 同字的软笔写法 Borthome语言:英文 下载 Drippy Zombie Regular语言:英文 下载 Precious Way语言:英文 下载 August语言:英文 下载 Renjany语言:英文 下载 Mammoth Regular语言:英文 下载 Hokia语言:英文 下载http://www.qiuziti.com/fontlist2?id=741381
12.场词语解释场的读音笔画笔顺组词与厂的区别二、写法不同 1、厂: 2、场: 三、侧重点不同 1、厂:指有屋顶的场所。 2、场:指漏天的场所。 联系方式:邹先生 联系电话:0755-83888366-8022 手机:18123972950 QQ:2880195519 联系地址:深圳市福田区车公庙天安数码城天吉大厦CD座5C1 请搜微信公众号:“KIA半导体”或扫一扫下图“关注”官方微信公众号 http://www.kiaic.com/article/detail/2151.html
13.同字书法字典同字书法写法同的书法怎么写行军万户同字之印 玄同轩 西泠印社 金石同寿 绩溪胡澍川沙沈树镛仁和魏锡曾会稽赵之谦同时审定印 赵之谦 和光同尘 绩溪胡澍川沙沈树镛仁和魏锡曾会稽赵之谦同时审定印 翁同和 元和王同愈 君子和而不同 翁同和印 常熟翁同和藏本 和光同尘 同和 【钢笔书法】 https://www.sfds.cn/540C/
14.Mybatisplus中的QueryWrapper的多种用法!(总结)二、MP–>QueryWrapper 5种更新语句不同写法: /** * 第一种,常用写法 */ public void updateUser1(){ //方式一: User user = new User(); user.setAge(29); user.setEmail("111111111111.com"); QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("name","Tom"); update(user,queryWrahttps://developer.aliyun.com/article/1462472
15.中华民国十文开国纪念币的版式区分与鉴赏钱币纵横隶书有多种变体(如所谓“大圆国”)。要区分其版别,不仅要看字体书法,还要看左右花枝的简与繁,左右旗帜的宽与窄、旗面旗杆的长与短乃至旗上刻线的深与浅、旗上星角的长短和大小,上下缨带的叠搭方向和疏密,局部字体的不同写法,花枝枝头的不同形状,等等,要区分清楚,得下一定工夫。https://www.360doc.cn/article/9124647_194799946.html
16.entry配置·前端工程化指南·看云不同写法场景 //单文件入口module.exports={entry:'./src/index.js'}// 上述配置等同于module.exports={entry:{main:'./src/index.js'}}//支持对象语法module.exports={entry:{app:'./src/app.js',vendors:'./src/vendors.js'}};// 或者配置多个入口module.exports={entry:{foo:'./src/page-foo.https://www.kancloud.cn/csnikey/fepro-guide/637917
17.皂幕山,其实不是很难爬……各种不一样的山。不同写法的山,不一样意境的山…… 上山路上各个休息亭旁边的加油驿站。 水泥路走完了。准备开始最后三分之一6666级楼梯冲刺。 步级比较平缓,10至20公分的高度。没有什么难度。 年轻人都可以跑着上去。 刚刚修整过的楼梯很漂亮。路边也没有什么垃圾。讨厌的是一直绕着我们的头不停旋转的苍蝇。https://www.meipian.cn/jvjcdvl