vue3中的优势
vue2 用的是object.defineproperty ,但该api 对数组拦截又问题,vue2 需要专门为数组响应又实现了一遍。而且不能拦截那些新增的删除的属性。另外 object.defineproperty 在初始化时候需要深度递归待处理的对象才能对它进行完全的拦截,明显的增加了初始化的时间。
而proxy可以直接对数组进行拦截,可以监听的到增删,还能对Map 和 Set 实现拦截,另外Proxy 的拦截也是懒处理行为,如果用户没有访问嵌套对象,那么也不会实施拦截,这就让初始化的速度和内存的占用都改善了。Proxy 返回的是一个新对象,我们可以只操作新的对象达到目的,而 Object.defineProperty 只能遍历对象属性直接修改
Vue3 主要在这几个方面进行了提升
编译阶段。对 diff 算法优化、静态提升等等
响应式系统。Proxy()替代Object.defineProperty()监听对象。监听一个对象,不需要再深度遍历,Proxy()就可以劫持整个对象
体积包减少。Compostion API 的写法,可以更好的进行 tree shaking,减少上下文没有引入的代码,减少打包后的文件体积
新增片段特性。Vue 文件的<template>标签内,不再需要强制声明一个的<div>标签,节省额外的节点开销