作用域提升
作用域提升(Scope Hoisting)是一种优化技术,它通过将模块中的代码尽可能地合并到一个作用域中,从而减少闭包的数量和模块之间的依赖关系。这种优化可以减少打包后的文件大小,并提高代码的执行效率。
Rollup 通过静态分析模块的依赖关系,将模块中的代码尽可能地合并到一个作用域中。具体来说,Rollup 会分析模块的导入和导出语句,并将这些语句替换为直接的变量引用,从而减少闭包的数量。
- 模块格式:作用域提升主要适用于 ES 模块(ESM),因为 ES 模块的导入和导出是静态的,便于 Rollup 进行静态分析。
- CommonJS 模块:如果项目中使用了 CommonJS 模块,需要使用
@rollup/plugin-commonjs
插件将其转换为 ES 模块。 - 动态导入:作用域提升不适用于动态导入(
import()
),因为动态导入的模块在运行时才会加载,Rollup 无法在打包时进行静态分析。
通过以上配置和注意事项,Rollup 可以有效地进行作用域提升,优化打包后的代码。