For AI agents: the complete documentation index is available at https://rspack.rs/zh/llms.txt, the full documentation bundle is available at https://rspack.rs/zh/llms-full.txt, and this page is available as Markdown at https://rspack.rs/zh/misc/glossary.md.
close

术语表

该索引列出了整个 Rspack 生态系统中的常用术语。

asset(静态资源)

静态资源是对图像、字体、视频等静态文件的统称。这些文件通常会最终输出为单独的文件,而不是打包到代码块中,但是通过其也可以转换成 base64 内联到代码块中

asset module(资源模块)

Asset 模块是一种特殊的模块类型,用来处理静态资源,例如图片、字体、视频等。

async chunk

Async chunk 指的是被异步加载的 chunk,当你使用动态导入时,Rspack 会将该模块打包到 async chunk 中。

bundle splitting

Bundle splitting 是一种允许你将代码分割或合并到多个 bundle 的技术,这对于并行请求和更好的浏览器缓存很有用,它不用于减少初始化 bundle 的大小。

built-in module type(内置模块类型)

Rspack 中的内置模块类型指的是那些不需要依赖 loader 和 plugin 即可支持的模块类型,例如 JavaScript、CSS、JSON、静态资源等,而像 TypeScript、HTML、Markdown、YAML 等需要依赖 loader 和 plugin 才能支持的模块类型则不是内置模块类型。

cache group(缓存组)

缓存组(cache group)是一组选择模块并决定如何拆分的规则,通过 cacheGroups 配置。例如,你可以选择 node_modules 中的模块,并为它们设置拆分体积阈值。

假设两个按需加载的页面都依赖 shared.js。缓存组可以选中这个共享模块,满足拆分条件后,SplitChunksPlugin 可以将它抽离到共享 chunk 中:

拆分前:
页面 A chunk:[page-a.js, shared.js]
页面 B chunk:[page-b.js, shared.js]

拆分后:
页面 A chunk:[page-a.js] ─┐
                        ├→ 共享 chunk:[shared.js]
页面 B chunk:[page-b.js] ─┘

这里,shared.js 是模块,包含它的共享 chunk 是拆分结果,缓存组则提供拆分规则。一个缓存组可以生成多个 chunk,详见 cacheGroups 示例。

chunk

Chunk 是构建过程中组织模块的单位,可以包含多个模块,并生成对应的资源文件。例如,一个页面的代码和它使用的组件可以放在同一个 chunk 中。

按照加载时机,chunk 可以分为:

  • Initial chunk:启动入口时需要加载的 chunk。
  • Async chunk:运行过程中按需加载的 chunk,例如为通过 import() 动态导入的模块生成的 chunk。

chunk graph(chunk 图)

Chunk 图是一种表示块之间关系的数据结构。它是一个有向图,图中的每个节点代表一个块,每条边代表块之间的依赖关系。

code splitting

Code splitting 是一种技术,它允许你将你的代码分割成多个块,并且只在应用程序运行时加载必要的块。这可以帮助你减少初始包的大小,加快应用程序的加载时间。

context module

上下文模块表示可以通过动态请求加载的一组模块。对于 import('./locales/' + name + '.js') 这样的表达式,或 require.context() 调用,Rspack 会创建上下文模块。它定义从哪个目录查找模块、是否查找子目录,以及允许加载哪些相对请求。

dependency

Dependency(依赖)记录了解析模块转换后的源码时发现的导入关系。Rspack 根据这些关系构建模块图。在代码生成阶段,依赖还可以生成导入和导出代码、替换源码,并声明所需的 Rspack 运行时功能。

initial chunk

Initial chunk 是被同步加载的 chunk,包含页面的入口模块和被静态导入的模块。

loader

Loader 是用来转换模块内容的。例如,我们可以使用 loader 将 TypeScript 模块转化为 JavaScript 模块,或者将 CSS 模块转化为 JavaScript 模块,将 CSS 注入到页面中。

module(模块)

模块(module)是 Rspack 处理的代码或资源单元,例如 page.js、Button.tsx 或 style.css。一个应用通常由多个模块组成。

module type(模块类型)

模块类型是模块的一种属性,它们可以通过不同的方式进行解析和处理。我们可以通过指明模块的模块类型来告诉 Rspack 如何处理它们。例如,我们可以通过指定模块类型为 JavaScript 来告诉 Rspack 该模块是一个 JavaScript 模块,然后 Rspack 就会使用 JavaScript 解析器来解析该模块,如果指定的模块类型为 CSS,那么 Rspack 就会使用 CSS 解析器来解析该模块。

module specifier(模块标识符)

模块标识符是一个可以解析为模块文件路径的字符串。例如,在下面的代码中,./modules/foo.js 就是模块标识符。

import { foo } from './modules/foo.js';

module resolution(模块解析)

模块解析是指 Rspack 如何找到模块的过程。Rspack 会根据模块的路径来解析模块,例如,当我们在代码中使用 import 'foo' 时,Rspack 就会根据模块的路径来解析模块。

module graph(模块图)

module graph 也被称为 dependency graph(依赖图)。

模块图是一种表示模块之间关系的数据结构。它是一个有向图,图中的每个节点代表一个模块,每条边代表模块之间的依赖关系。

NAPI-RS

NAPI-RS 是一个在 Rust 中构建预编译的 Node.js 插件的框架。它通过提供 Node-API 的高级抽象,简化了创建和发布本地 Node.js 附加组件的过程。

plugin(插件)

插件可以用来扩展 Rspack 的功能。它可以用来定制构建过程,或与其他工具集成。Rspack 提供了很多钩子,你可以用它们来定制构建过程。

Rspack 运行时

Rspack 运行时(Rspack runtime)是 Rspack 添加到构建产物中的代码,负责加载和执行模块、缓存模块导出,以及加载额外的 chunk。根据配置,它还可以支持 HMR 等功能。这些代码在浏览器或 Node.js 等 JavaScript 环境中执行;这里的「运行时」并不指 JavaScript 引擎或宿主环境。

Rspack 运行时模块

Rspack 运行时模块(RuntimeModule)是构建过程中用于生成一部分 Rspack 运行时代码的单元,例如设置 publicPath、加载 chunk 或支持 HMR。它生成的代码会被加入相应的 chunk。这里的「模块」并不是应用源码中通过 import 引用的业务模块。

插件可以继承 RuntimeModule,通过 generate() 返回 JavaScript 代码,再调用 compilation.addRuntimeModule 将其实例添加到指定的 chunk。

scope hoisting (作用域合并)

作用域提升是一种将多个模块作用域进行合并的技术,它在可能的情况下将多个模块合并到一个单一的作用域中,而不是将每个模块包装在单独的函数中。这样对代码压缩更友好,并可以通过减少模块查找成本来提高运行时性能。

tree shaking (摇树优化)

Tree shaking 是一种允许你从包中删除未使用代码的技术。它是一种特殊的死代码优化方式。像 Rspack 这样的编译器将通过分析代码的静态语法,然后删除未使用的代码来完成此操作。