[前端]Vue3.0主要做了哪些优化?
2022-10-05 本文已影响0人
半颗糖嘿
Vue3.0主要做了哪些优化?
①源码优化
源码优化的目的是让代码更易于开发和维护。
源码的优化主要体现在monorepo(更好的代码管理方式)和TypeScript(可以解决复杂场景类型的检查)。
②源码体积优化
主要移除了一些冷门的feature,引入tree-sharking技术。
③数据劫持优化
Vue2.0中主要是通过Object.defineProperty这个API劫持的getter和setter。
Object.defineProperty(data,'val',{
get(){
},
set(){
}
})
其有如下缺点:
第一,Object.defineProperty这个API就是要预先知道要被拦截的key是什么。
第二,不能监听对象的新增属性和删除属性。
第三,对于这个嵌套层级比较深的对象,需要递归,会造成性能浪费。
Vue3.0中使用了Proxy API做数据劫持。
observed = new Proxy(data,{
get(){
},
set(){
}
})
④编译优化
Vue2.0中的patch阶段耗时相对较多。
Vue3.0通过在编译阶段优化编译的结果,实现运行时patch过程的优化;Vue3.0在编译阶段还包括了对Slot的编译优化、事件侦听、函数的缓存优化,并且在运行时重写diff算法。
⑤语法API优化:Composition API
其提供的帮助有:优化逻辑组织、优化逻辑复用。