vue3.0 变化点:
1.源码体积优化:
引入tree-shaking:通过编译阶段的静态分析,找到没有引入的模块并打上标记,然后在压缩阶段会删除这些没有用的代码
如果在项目中没有引入transition、keepAlive等组件,那么他们对应的代码就不会打包,从而减少项目引入vue.js包体积的目的
2.数据劫持优化:
- vue2.0通过object.defineProperty 这个API劫持数据的getter 和 setter,把每一层对象数据都变成响应式,如果对象嵌套层级比较深,就会有一些性能问题
- vue3.0是通过 proxy 这个API进行数据劫持,劫持的是整个对象,是通过在getter中递归响应式,即真正访问到内部对象才会变成响应式,一定程度上提升了性能
3.编译优化:
- 当整个模版只有少量动态节点时,vue2.0会遍历和diff所有节点,而vue3.0在编译阶段对静态模版的分析,编译生成了block tree
4.语法API优化:
- 提供了 Composition API,将某个逻辑关注点相关的代码全都放在一个函数里,当需要修改一个功能时,就不需要在文件中跳来跳去