1.响应式原理不同
1.vue2的响应式原理是通过数据劫持结合发布者订阅者模式来实现的,通过Object.defineproperty()来劫持各个属性的getter和setter,当数据发生变动时,发送消息给订阅者,触发相应的监听回调。
Object.defineproperty()无法监测到数组通过索引改变元素的值,以及无法监测到数组长度的改变;无法监听到改变对象的属性的增删改。
2.vue3的响应式原理是基于Proxy。相比于Object.defineproperty()只能拦截对象的某一属性,Proxy可以代理整个对象,对象的属性的增删改都能监测到。
2.vue3使用了Composition API
vue3是组合API,用function来分割,解决了同一个功能的代码低聚合的问题。
3.模板template可以有多个根节点
4.vue3的set up方法里面包含了所有东西,包括生命周期钩子。
在vue3里面beforecreate 和created被包含在了set up函数里面。其余的生命周期钩子的命名也改变了,而且都能写进set up里面。
5.vue3的依赖改成按需引入
比如我们要使用ref reactive 生命周期钩子等都需要从vue中引入才可以使用,这样可以减少多余的引用,减小体积。
6.vue3新增瞬间移动组件teleport
teleport可以让这个组件按逻辑写在某个组件中,但是它可以出现在任何地方。