1、双向数据绑定的原理不同
- vue2使用的是Object.defineProperty,通过发布/订阅实现的;
- vue3使用的是ES6的proxy,对数据进行代理,能够监听对象和数组的变化;
2、是否支持碎片化
- vue2中,template下只允许存在一个根节点;
- vue3中可以有多个根节点,为我们创建一个虚拟的Fragment节点;
3、API不同
- vue2使用的是选项式API,里面有data,methods,mounted等;
- vue3使用的是组合式API,使用的是setup函数;
4、定义数据变量方法不同
- vue2中数据放在data里,方法放在methods里;
- vue3使用的是setup方法,这个方法在组件初始化的时候触发,使用reactive和ref将数据变成响应式数据;
5、生命周期不同
vue2 vue3 生命周期 beforeCreate() setup 组件开始创建数据实例之前 created() setup 组件开始创建数据实例完成 beforeMount() onBeforeMount() DOM挂载之前 mounted() onMounted() DOM挂载完成(页面完成渲染) beforeUpdate() onBeforeUpdate() 组件数据更新之前 updated() onUpdated() 组件数据更新之后 beforeDestroy() onBeforeunmount() 组件销毁之前 destroyed() onUnmounted() 组件销毁之后