1、对数据的响应式处理不同
Vue2中使用Object.defineProperty实现响应式,但是需要通过遍历+递归深度监听,并且无法监听数组的变化;
Vue3使用Proxy实现响应式,只需要对对象进行递归即可实现响应式。通过ref(简单对象)和reactive(复杂对象)将一个对象变成响应式。toRef和toRefs可以从reactive对象中解构出响应式的属性。
2、Composition API代替Options API
使用组合api代替选项api,代码的逻辑更加清晰,可以把相同功能的代码放在一起,方便后期维护。
3、生命周期钩子变化
取消了created和beforeCreate两个钩子,其他钩子名字前需要加上on,并且都写到组合API中。
4、取消$children
取消$children,使用$ref代替
5、v-for中ref的改变
在vue2中,如果在v-for中使用ref,读取出来是一个包含所有子元素的数组,这是十分消耗性能的。在vue3中,ref后的不再是id,而是一个函数,这个函数有一个参数el,可以按照需要来决定是否获取这个el。
6、v-for优先级
vue2中v-for的优先级比v-if优先级更高,导致性能消耗比较大。vue3中v-if的优先级比v-for更高了,就没有性能问题一说。