工程化与性能 · 单选题 · 第 56 题
前端与全栈开发面试 · 第 56 题
打包工具的 Tree Shaking(摇树优化)主要依赖什么?
- ACommonJS 运行时的动态 require 调用
- BES Module 静态的 import / export 结构
- C对代码进行 gzip 压缩以后的产物体积
- D把所有模块合并成一个文件后再混淆
答案
B B. ES Module 静态的 import / export 结构
解析
ESM 的导入导出在编译期就能确定,打包工具可以分析出哪些导出从未被使用,把它们删掉。CommonJS 的 require 可以写在条件里、模块名也可以动态拼接,很难静态分析。还要注意 package.json 里的 sideEffects 字段,有副作用的模块即使没被引用也不能删除。