以下是与 Rspack 和 webpack 一起使用的一些常用术语。
资源是应用程序中使用的资源,例如图像、字体、视频等。它们通常最终作为输出目录中的文件,可能需要进一步处理,例如转换为 base64 字符串并在输出包中内联。
“资源模块”是一种特殊类型的模块,用于处理静态资源,例如图片、字体、视频等。
历史上,打包器会生成一个名为“包”的单个输出文件。块的概念后来作为一项功能的一部分引入,用于自动将包分解成可以按需加载的较小文件。
包拆分是一种技术,允许您将代码拆分成多个包,这对于并行请求和更好的浏览器缓存很有用,它不用于减小初始包大小。
在打包术语中,块是组合成单个数据文件的模块组。Rspack 会将相互关联的模块打包成一个块,然后生成相应的文件。
块图是一种数据结构,表示块之间的关系。它是一个有向图,图中的每个节点代表一个块,每条边代表块之间的依赖关系。
代码拆分是一种技术,允许您将代码拆分成多个块,并且仅在应用程序运行时加载必要的块。这可以帮助您减小初始包的大小并加快应用程序加载时间。
在 Rspack 中,一等公民模块类型是指无需依赖加载器或插件即可支持的模块类型,例如 JavaScript、CSS、JSON、Assets 等。但是,需要加载器或插件支持的模块类型,例如 TypeScript、HTML、Markdown、YAML 等,不是一等公民模块。
在打包术语中,加载器类似于插件,但专门用于转换模块内容。例如,我们可以使用加载器将 TypeScript 模块转换为 JavaScript 模块,或将 CSS 模块转换为将 CSS 注入页面的 JavaScript 模块。
应用程序可以拆分成多个名为模块的文件,这些文件可能是 JavaScript 源文件或其他资源,例如图像或 CSS。这些文件可以通过导入和导出共享和重用模块内容,这有助于将您的代码组织成独立的部分并为它们之间的通信定义正式的接口。
模块的类型决定了打包器如何解析和处理它。例如,我们可以告诉 Rspack 模块是一个 JavaScript 模块,方法是将模块类型指定为 JavaScript,Rspack 将使用 JavaScript 解析器解析模块。如果指定的模块类型是 CSS,则 Rspack 将使用 CSS 解析器解析模块。
模块解析是计算模块说明符指示的文件路径的过程。例如,import 语句包含一个模块说明符,Rspack 将使用模块解析算法找到相应的文件路径。
模块图是一种图数据结构,表示模块之间的关系。它是一个有向图,图中的每个节点代表一个模块,每条边代表模块之间的依赖关系。
NAPI-RS 是一个框架,用于在 Rust 中构建预编译的 Node.js 插件。它通过在 Node-API 上提供高级抽象,简化了创建和发布原生 Node.js 插件的过程。
插件是一个程序模块,可用于通过可扩展性钩子扩展 Rspack 的功能。它可用于自定义构建过程,或与其他工具集成。Rspack 提供了许多钩子,您可以使用它们来自定义构建过程。
作用域提升是一种技术,在可能的情况下将模块连接到一个作用域中,而不是将每个模块包装在单独的函数中。它可以使缩小更有效,并通过减少模块查找成本来提高运行时性能。
树摇是一种技术,允许您从包中删除未使用的代码。它是一种编译器死代码消除的形式,重点是最小化对死代码的处理。像 Rspack 这样的编译器将通过分析代码的静态结构来完成此操作,然后删除未使用的代码。