1.源码优化
-
(1)源码的优化主要体现在使用menorepo和TypeScript管理和开发源码,提升了自身代码的可维护性
-
(2)相对于Vue2的源码组织方式,menorepo把这些模块拆分到不同的package中,每个package有各自的API、类型定义和测试,使得模块拆分更细化,职责划分更明确,模块之间的依赖关系也更加明确,开发人员更容易阅读、理解和更改所有模块源码,提高代码的可维护性
-
(3)package是可以独立于vue.js使用,这一点是vue2做不到的,可以单独依赖这个响应式库而不用去依赖整个vue.js,减少了引用包的体积大小
-
(4)使用了TypeScript有类型语言开发
2.性能优化
-
(1)源码体积上:引入了tree-shaking的技术,通过编译阶段的静态分析,找到没有被引入的模块并标记,如果你在项目中没有引入Transition、keepAlive等组件,那么它们对应的代码就不会打包,减小了代码体积
3.数据劫持优化
-
数据是响应式的,必须劫持数据的访问和更新,使用了Proxy对数据进行劫持,Proxy不能监听到内部深层次的对象变化,因此Vue3的处理方式是在getter中去递归响应式,这样的好处是真正访问到的内部对象才会变成响应式,而不是无脑递归
4.编译优化
-
Vue2的数据更新并触发重新渲染的粒度是组件级别的,而Vue3通过编译阶段对静态模板的分析,编译生成了Block Tree
-
Block tree是一个将模板基于动态结点指令切割的嵌套区块,每个区块内部的结点结构是固定的,每个区块只需要以一个数组来追踪自身包含的动态结点
-
借助Block tree ,