一、vue2和vue3双向数据绑定原理

vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的 vue3发生了改变,使用proxy替换Object.defineProerty,使用Proxy的优势:

可直接监听数组类型的数据变化 性能的提升 监听的目标为对象本身,不需要像Object.defineProperty一样遍历每个属性,有一定的性能提升 可直接实现对象属性的新增/删除

二、根节点的不同

vue3在组件中支持多个根节点.

vue2

<template><div><h1></h1></div>
</template>

vue3

<template><div><h1></h1></div><div><span></span></div>
</template>

三、Composition API (组合api)

vue2和vue3最大的区别就是,vue3使用了Composition API (组合api)

是使用的Options API,这种写法不方便我们的阅读和交流,逻辑过于分散。

在vue2中

// vue2
<script>
export default {// 数据data() {return {};},mounted() {},// 方法methods: {},computed: {},components:{}
};
</script>// vue3// 这样代码会更加简洁和整洁。
<script>
export default {setup() {// 数据 和 方法都在setup里面使用}
};
</script>

四、生命周期

Vue2--------------vue3

beforeCreate  -> setup()    开始创建组件之前,创建的是data和method
created       -> setup()
beforeMount   -> onBeforeMount  组件挂载到节点上之前执行的函数。
mounted       -> onMounted  组件挂载完成后执行的函数
beforeUpdate  -> onBeforeUpdate 组件更新之前执行的函数。
updated       -> onUpdated  组件更新完成之后执行的函数。
beforeDestroy -> onBeforeUnmount    组件挂载到节点上之前执行的函数。
destroyed     -> onUnmounted    组件卸载之前执行的函数。dszhuoyi
activated     -> onActivated    组件卸载完成后执行的函数
deactivated   -> onDeactivated

注意:如果想要在vue中获取dom节点在created中用this.$nexttick

  • 若组件被keepalive包含,则多出下面两个钩子函数。

  1. onActivated(): 被包含在中的组件,会多出两个生命周期钩子函数。被激活时执行 。

  2. onDeactivated(): 比如从 A组件,切换到 B 组件,A 组件消失时执行。

五、 diff算法

vue2

vue2 diff算法就是进行虚拟节点对比,并返回一个patch对象,用来存储两个节点不同的地方,最后用patch记录的消息去局部更新Dom。 vue2 diff算法会比较每一个vnode,而对于一些不参与更新的元素,进行比较是有点消耗性能的。

vue3

vue3 diff算法在初始化的时候会给每个虚拟节点添加一个patchFlags,patchFlags就是优化的标识。 只会比较patchFlags发生变化的vnode,进行更新视图,对于没有变化的元素做静态标记,在渲染的时候直接复用。

六、 v-if 和 v-for的优先级

vue2

我们最好不要把v-if和v-for同时用在一个元素上,这样会带来性能的浪费(每次都要先渲染才会进行条件判断)

// vue2
v-for 优先于 v-if 生效
<div v-if="index == 1" v-for="(item,index) in arr" :key="index">{{item}}</div>// vue3
v-if 优先于 v-for 生效
<div v-if="index == 1" v-for="(item,index) in arr" :key="index">{{item}}
</div>

vue中会给我们报警告: 意思就是:属性“index”在渲染期间被访问,但未在实例上定义(v-if先进行判断,但是这时候v-for还没有渲染,所以index是找不到的)

浅谈vue2与vue3的区别相关推荐

  1. 浅谈 unix, linux, ios, android 区别和联系

    浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答. 1.UNIX 和 Linux UNIX 操作系统(尤尼斯), 是一个强大的多 ...

  2. 建造者模式浅谈 与工厂模式的区别

    感谢您的阅读.如果感觉文章对您有用,麻烦您动动手指点个赞,以资鼓励.谢谢! 转载请注明出处哈 建造者模式浅谈 与工厂模式的区别_茄子_土豆的博客-CSDN博客_建造者模式和工厂模式的区别 创建对象时构 ...

  3. c语言宽字符与wchar,浅谈c++ 字符类型总结区别wchar_t,char,WCHAR

    1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数. UNICODE:wchar ...

  4. vue2和vue3的区别

    文章目录 前言 一.vue2和vue3双向数据绑定原理的区别? 二.根节点的不同 三.Composition API (组合api) 四.生命周期的变化 五. vue2和vue3的diff算法 六. ...

  5. vue2与vue3的区别

    1. vue2和vue3双向数据绑定原理发生了改变 vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的. ...

  6. vue2和vue3的区别(由浅入深)

    前言 vue2和vu3之前的区别,一直以来是面试必考题目,如何回答,回答的层次决定了面试者的对于vue2,3的理解,以及对于vue3目前稳定版本发展的方向的了解,即考察使用程度,又考察了学习能力,可以 ...

  7. 【经典面试题】vue2与vue3的区别

    目录 一. vue2和vue3双向数据绑定原理发生了改变 二. Vue3支持碎片(Fragments) 三. Composition API 四. 建立数据 data 五. 生命周期钩子 - Life ...

  8. 浅谈JDBC与ODBC的区别与应用

    谈到JDBC与ODBC的区别,JDBC和ODBC其实都是用来连接数据库的启动程序.ODBC中文名字叫做开放数据库互联,是微软技术人员开发的开放服务结构中有关数据库的一个组成部分,它建立一组相关的规范, ...

  9. 浅谈Android各版本sdk区别

    转载地址:http://blog.csdn.net/itluochen/article/details/52688935 目录(?)[-] SDK目录 add-ons docs extras plat ...

最新文章

  1. 利用FFT计算非平稳随机信号WVD分布
  2. 认证篇——消息认证码
  3. 绘制颜色渐变矩形函数
  4. C#中读取带有Xmlns命名空间的XML文件
  5. jquery mysql实现加入购物车_jQuery实现加入购物车飞入动画效果
  6. 发那科机器人网段_FANUC机器人基本操作指导
  7. 互联网光环下的新金融群像:运营最重要的是说人话
  8. 去除面部黑色素小妙招_去除脸部黑色素7个小方法
  9. Mac电脑上哪个解压缩软件好用?MAC上好用的解压缩软件分享
  10. JAVA对接发送SMS短信服务
  11. 网站建设好但是访问不了的原因及解决方法
  12. 推荐 4 款超好用的内网穿透工具,总有一款适合你
  13. AutoCAD .Net 不同文档间复制对象
  14. Python3爬取前程无忧数据分析工作并存储到MySQL
  15. 林轩田机器学习基石笔记5 - Training versus Testing
  16. 2012服务器系统安全模式怎么进,Windows Server 2012 一直出現在安全模式
  17. Codeforces Round #470 (Div. 2) A Protect Sheep (基础)输入输出的警示、边界处理
  18. Fastreport.Net用户手册:打印Bands
  19. B.图算法:图学习之项目实践(UniMP算法实现论文节点分类、新冠疫苗项目实战,助力疫情)[系列九]
  20. 宜信 | 供应链金融+区块链双链合璧

热门文章

  1. 观念决定态度,态度决定一切
  2. ODN 2006丨艾美捷CpG ODN系列说明书
  3. laravel5.2 银联支付
  4. ESP32任务看门狗实践
  5. delete 和 delete []的真正区别
  6. adb shell 连接两个相同设备
  7. 第六章 财务报告分析
  8. 显著性物体检测(salient object detection, SOD)代码汇总
  9. 剑指offer 27. 二叉树的镜像
  10. 可能四轴,智能车,直升机的一些原理本身就是类似的