删除|Webpack | TreeShaking工作原理( 二 )


会导致 document.title没有成功被设置导致出现bug 。
副作用出现原因
那有同学说了 , 不在项目中写带有副作用代码不就完了嘛?
只是难以预料的是 , 副作用代码很可能在编译阶段产生 。
举个例子:

与此同时 , 如果我在第三个文件中注释掉 return Greet 之后 , Terser 可以成功删除 。

为什么呢?这是因为 return Greet 之后相当于给greet 变量赋值 。 而这个值在其他处有可能被修改 。
而Terser(压缩代码工具) , 不能有效分析变量后续是否被引用、修改 。
因此 Terser 不清楚以上代码是否产生副作用 , 故而保留 。
总结
1. Tree Shaking 用于减小文件体积 , 其工作流程是先标记 , 后删除
2. 代码必须遵循 ES module 规范
3. 删除代码失灵很可能因出现副作用代码导致
预告:下一篇着重介绍Tree Shaking 的实践中遇到的问题以及解决办法 。
予人玫瑰 , 手有余香 , 如果您觉得内容不错 , 希望可以点赞关注 , 从而帮助到更多的人 。