1. vue2和vue3双向数据绑定的原理发生了变化。
vue2的双向数据绑定是利用ES5的一个API Object.defineProperty()对数据进行劫持并结合发布订阅模式的方式来实现的; vue3中使用的是ES6的Proxy API对数据代理。
2.vue3支持碎片(Fragments)。
就是在组件中放置多个根节点。
3.vue3中采用Composition API
vue2 和 vue3最大的区别———vue2使用选项型API(Option API),vue3使用的是合成型API(Composition API)
Option Api: 根据配置项 按照规则将对应代码放到对应的配置项中,对应产生了三个问题:
1.1 随着组件变大,可读性越来越困难,功能代码会被所有组件选项(data,method等)拆分;
1.2 不利于代码重用,即使有'mixin'
1.3 vue2 提供了有限的TypeScript支持
Composition api: 可以让同一个功能的代码放到一起,查看修改时就不用一个文件到处跳。
1.1 它是根据逻辑相关性组件代码的,提高可读性和可维护性
1.2 基于函数组合的API更好的重用逻辑代码(vue2中的mixin容易发生命名冲突且关系不清)
4.建立数据的方式
vue2 是把数据放置在data属性中。
vue3 需要使用setup方法,该方法在组件对象还没有创建前就触发。
5 生命周期钩子不同
vue2:
beforeCreate, created, beforeMount, mounted,beforeUpdate, updated, beforeDestory, destoyred, activated,deactivated
vue3:
setup,beforeCreate, created, beforeMount, mounted,beforeUpdate, updated,
beforeUnmount,unmounted, errorCaptured, activated,deactivated