3.数据绑定原理
vue2的双向数据绑定原理是利用es5的一个APIObject.definePropert(当前监听对象,对象属性,属性描述)
对数据进行劫持结合发布订阅模式的方式来实现的。
vue3中使用了es6的proxy
API对数据代理。proxy
是对返回的对象进行代理,是对整个对象进行代理不是对象中的某个属性。(proxy(代理对象,handler))其中,handler是对数据进行操作的方法,如get(代理对象,key),set(代理对象,key,新值)。
区别:vue2.0 object.defineProperty
只能劫持对象属性,无法监控数组下标的变化,导致通过数据下标添加的元素不能实时响应的弊端(单独对数组做一些特异性操作pop(),shift()等),且一次只能给对象的一个属性添加get和set的方法。而Vue3.0中的proxy
不仅可以代理对象,还可以代理数组,也可以代理动态添加的属性。一次性给对象的所有属性都设置get和set的方法。
4.vue3支持碎片
组件可以有多个根节点,vue2下面必须只能包含一个根节点。
5.vue3支持TypeScript