code splitting
通过将 JS 应用分割成块,只有在某个应用的路由实际需要的时候才会进行加载。
three shaking
通过对代码文件进行静态分析,只将实际使用到的代码引入到结果文件中(去除掉永远也不会用的代码),减小代码体积。它是一种对无用代码的消除(dead code elimination)。
tree shaking 详细解释
JS 代码的处理过程:parse -> compile -> execution
在书写代码的时候尽量使用 import { xx } from 'xx.js' ,同时需要将副作用考虑在内。
针对于 webpack:
在 package.json 文件中注明 sideEffects: false,或者将含有副总用的文件进行标明。在使用 babel 的时候,babel 会将 ESM 转换为更为通用的 Commonjs 或者 UMD,这会对 tree shaking 产生干扰,所以可以用特定的配置告知 babel 不要进行转换。
{"name": "webpack-tree-shaking-example","version": "1.0.0","sideEffects": false}
或者
{"name": "webpack-tree-shaking-example","version": "1.0.0","sideEffects": ["./src/utils/utils.js"]}
针对于 babel:
{"presets": [["env", {"modules": false}]]}
