1.源码自身的维护性
2.兼容性

monorepo和TypeScript管理和开发源码API、类型定义和测试,这样使得模块拆分更细化,职责划分更明确,模块之间的依赖关系也更加明确,开发人员也更容易阅读、理解和更改所有模块源码,提高代码的可维护性。Flow对于复杂场景类型检查支持不好featuretree-shaking的技术依赖ES2015模块语法的静态结构(即 import和export)
通过编译阶段的静态分析,找到没有引入的模块并打,上标记
如果你在项目中没有引入Transition、KeepAlive 等组件,那么它们对应的代码就不会打包,这样也就间接达到了减少项目引入的Vue.js包体积的目的
实现DOM功能,必须劫持数据的访问和更新,当数据改变后,为了自动更新DOM,那么就必须劫持数据的更新,也就是说当数据发生改变后能自动执行一些代码去更新DOM。
因为在渲染DOM的时候访问了数据,所以可以对它进行劫持,这样在内部建立了依赖关系,也就知道数据对应的DOM是什么了
Proxy API进行数据劫持注意:Proxy API并不能监听到内部深层次的对象变化,因为VUE3的处理方式是
在getter中去递归响应式。好处是:真正访问到的内部对象才会变成响应式,而不是无脑递归,从而提升性能。
Block tree,实现运行时patch过程的优化就是将某个逻辑关注点相关的代码全都放在一个函数里
这样当需要修改一个功能时,就不再需要在文件中跳来跳去
当组件中存在大量的mixins后,会存在命名冲突和数据来源不清晰问题,组合式API解决了上述俩个问题