一直以来都知道在 webpack 打包优化中,有 tree shaking(别名:树摇)这一项优化,却不知道它的工作机制和原理,趁着今天复习知识的空学习一下
tree shaking 是什么?
tree shaking,别名:树摇,最早是由Rollup实现。根据字面意思我们可以把它理解成一种工具,可以“摇动”我们的 JS 文件,将其中用不到的代码“摇”掉,属于性能优化的一部分。具体到实际场景中来看,我们在 webpack 项目中,会有一个入口文件,会有很多的依赖模块挂载在 index.js 下,但是我们只会用到其中的一部分,造成内存空间浪费, tree shaking 就可以将无用的模块剔除掉,实现代码体积优化的效果。
tree shaking 的工作机制
因为 tree shaking 只能在静态的 modules 下工作,所以直到 ES6 的 import 语法中才可以完美使用。
tree shaking 的原理是什么?
- ES6 Module 引入进行静态分析,故而编译的时候正确判断到底加载了那些模块
- 静态分析程序流,判断那些模块和变量未被使用或者引用,进而删除对应代码