Tree Shaking 是构建时移除未使用 ES6 模块代码的优化技术,依赖其静态导入导出特性;CommonJS 因动态性不支持,且副作用、动态 import、间接引用等会导致失效,需配合代码分割与压缩协同优化。

Tree Shaking 是一种在构建时移除 JavaScript 中未使用代码的优化技术,它依赖于 ES6 模块的静态结构特性,只保留实际被引用的导出(export)和导入(import)部分,从而减小最终打包体积。
ES6 模块(import/export)在编译阶段就能确定依赖关系,是静态的;而 CommonJS(require/module.exports)是运行时动态加载的,无法在构建时准确判断哪些导出没被使用。因此 Webpack、Rollup 等工具只能对 ES6 模块做安全的“摇树”——把没被 import 的 export 彻底删掉。
import { foo } from './utils.js',Tree Shaking 才可能剔除 bar 和 baz
import * as utils from './utils.js' 或 require('./utils.js'),整个模块都会被保留即使用了 ES6 模块语法,以下情况也会让未使用代码“幸存”下来:
package.json 中显式声明 "sideEffects": false 或列出白名单import(`./${name}.js`),路径不确定,无法静态分析,整个模块会被保留obj['someFunc'](),或赋值给变量再调用,工具无法追踪lodash-es)最直接的方式是查看构建产物源码或依赖图:
立即学习“Java免费学习笔记(深入)”;
stats: 'verbose' 或插件(如 webpack-bundle-analyzer)分析模块引用链mode: 'production' 时的 bundle 大小变化(Tree Shaking 默认只在生产模式启用)Tree Shaking 不是孤立的,常与以下技术协同工作:
import Button from 'ant-design-vue/lib/button' 替代完整引入,本身就是手动 Tree Shaking以上就是什么是javascript Tree Shaking_它如何减少代码体积?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号