vue2到vue3包体积也减少了很多,你知道他做了那些优化吗

25 阅读2分钟

Vue 2 到 Vue 3 在包体积减少方面做了以下优化:

  • Tree-shaking 支持更好

    • 模块化改进:Vue 3 采用了更现代的模块化设计,将框架的功能拆分成更小的模块。比如响应式系统、虚拟 DOM 等都被拆分成独立的模块,使得在打包时可以更精准地去除未使用的代码,而 Vue 2 整体的模块划分相对较粗,不利于 Tree - shaking 进行精细的优化。
    • ES 模块导入优化:Vue 3 在内部使用 ES 模块的导入方式,并且对导入的模块进行了优化,使得打包工具能够更有效地识别和处理模块之间的依赖关系,从而更彻底地进行 Tree - shaking。而 Vue 2 中部分模块的导入方式可能会干扰 Tree - shaking 的效果。
  • 移除和优化一些功能

    • 移除内置的编译器:Vue 3 将编译器相关的代码从核心包中移除,只保留了运行时的部分。因为在很多情况下,开发者在构建项目时会使用预编译的模板,所以运行时编译器并不是必需的。这样可以大大减小核心包的体积。而 Vue 2 中内置了编译器,这部分代码增加了包的大小。
    • 优化指令:对于一些不常用的指令进行了优化或移除。例如,Vue 2 中的v-once指令在 Vue 3 中被重新实现,采用了更高效的方式,减少了相关代码的体积。同时,一些在实际应用中很少使用的指令被移除,进一步减小了包体积。
    • 精简响应式系统:Vue 3 的响应式系统进行了重写,采用了Proxy实现,相比 Vue 2 基于Object.defineProperty的响应式系统,代码更加简洁和高效。在实现相同功能的情况下,Vue 3 的响应式系统代码量更少,并且不需要额外的代码来处理一些特殊情况,如数组变异方法的拦截等,从而减小了包体积。
  • 代码压缩优化:Vue 3 在代码编写和结构上进行了优化,使得代码在压缩后能够更小。例如,在一些内部函数和变量的命名上采用了更短的名称,在不影响代码可读性和可维护性的前提下,减少了代码的字符数。同时,对一些代码逻辑进行了重构,使得代码在压缩时能够更有效地去除冗余信息,进一步减小了压缩后的包体积。