是什么
Tree-shaking 是一种通过清除多余代码来优化项目打包体积的技术,专业术语为:Dead code elimination
.
简单来说就是在保持代码运行结果不变的前提下去除无用的代码。
在 Vue2 中,无论我们使用什么功能,它们最终都会出现在打包产物中,主要原因是 Vue 实例在项目中是单例的,程序无法检测到该实例对象的哪些属性在代码中会被使用到。
而 Vue3 引入 Tree-shaking
特性,将全局 api 进行分块,如果某些功能不被使用到,那么它们将不会出现在打包产物中。
如何做
Tree-shaking 是基于 ES6 模板语法(import 和 exports),主要借助 ES6 模块的静态编译思想,在编译的时候就能确定模块之间的依赖关系,以及输入和输出的变量。
Tree-shaking 一共做了两件事:
- 编译阶段利用 ES6 Moudle 判断哪些模块已经加载
- 判断哪些模块和变量未被使用 / 引用,进而删除
作用
通过 Tree-shaking,Vue3 的好处有:
- 减少程序的体积(更小)
- 减少程序运行时间(更快)
- 便于对程序架构进行优化(更友好)