最大的不同首先组合式选项式写法不同
vue2:逻辑分散不利于阅读交流,入门简单一点
vue3:变量和方法都定义在setup()中,代码集中有利于开发
①、双向数据绑定原理不同
vue2:es5的object.definePropert()对数据进行劫持,结合发布订阅和观察者模式进行的
vue3:采用ES6的Proxy的数据代理来对数据进行代理,修复了v2中对象和数组的属性添加修改的问题
原因:无法监听对象或数组新增、删除的元素
②、根节点数量不同
vue2:只能有一个根节点
vue3:多个根节点,解决了多个div嵌套的问题
③、生命周期钩子不同
vue3组合式中取消了created和beforeCreated,取而代之的是setup()
vue2中的destoryed钩子在vue3中为unmounted
而且vue3的生命周期钩子函数在调用前需要先进行引入
④、组件传值不一样
vue3中在子组件中使用emits拦截事件,props拦截属性;
vue2中使用$emit()派发事件,父组件使用$on监听,
⑤、创建实例方式不一样
vue2中使用new Vue()的方式,来创建实例
vue3中使用createApp()方法来创建实例
⑥、v-if和v-for优先级
在v2中如果同时使用v-for 和 v-if 那么v-for的优先级是高于 v-if 的
v3中v-if 始终高于 v-for但是还是不建议一起使用
⑦、diff算法
vue2:vue2diff算法会比较每一个vnode,对于一些不参与更新的元素,也会比较就消耗性能
vue3:vue3对与没有更新的元素做静态标记,渲染的时候不比较直接服用,加快性能
整理持续更新,学习用