web前端培训Treeshaking问题

中科白癜风医院怎么样 https://yyk.familydoctor.com.cn/2831/environment/

背景

在自研打包工具的过程中,发现有时会碰到不同的编译工具处理相同的代码,其大小差距可能很大,追查下来大部分是和不同工具对代码优化的处理方式不同所致。目前大部分js打包工具都支持的一种优化即treeshaking,但是不幸的是treeshaking没有比较标准的定义,各个打包工具的treeshaking实现又不尽相同。

术语

Treeshaking在不同工具里的意义不太统一,为了统一后续讨论,我们规范各个术语。

minify:编译优化手段,指在不影响代码语义的情况下,尽可能的减小程序的体积,常见的minify工具如terser、uglify,swc和esbuid也自带minify功能。

Deadcodeelimination(DCE):即死代码优化,一种编译器优化手段,用于移除不影响程序结果的代码,实现DCE的手段有很多种,如constfolding(常量折叠)、Controlflowanalysis、也包括下面的LTO。

LinkTimeOptimization:指link期优化的手段,可以进行跨模块的分析优化,如可以分析模块之间的引用关系,删掉其他模块未使用的导出变量,也可以进行跨模块对符号进行mangle。




转载请注明:http://www.aierlanlan.com/grrz/3553.html