Module Federation 是一种 JavaScript 应用分治的架构模式(类似于服务端的微服务),它允许你在多个 JavaScript 应用程序(或微前端)之间共享代码和资源。
Rspack 团队与 Module Federation 的开发团队密切合作,并为 Module Federation 提供一流的支持。
模块联邦有一些典型的使用场景,包括:
模块联邦可以帮助你:
Module Federation(MF) 目前有多个主要版本,你可以根据你的需求选择其中一个使用。
下面是几个版本的特点:
版本 | 描述 | 特点 | 使用场景 |
---|---|---|---|
MF v2.0 | - Module Federation 的增强版本 - 基于 Module Federation v1.5 实现 |
- 开箱即用的提供了一些额外的功能,比如动态 TS 类型提示、Chrome Devtools、预加载等 - 更适用于支持大型 Web 应用的微前端架构 - 包括 Module Federation 1.5 的所有功能 |
需要使用 Module Federation 2.0 进阶能力的项目 |
MF v1.5 | Rspack 内置支持的版本 | - 支持 Module Federation v1.0 的模块导出、模块加载、依赖共享等能力 - 添加了运行时插件功能,允许用户扩展模块联邦的行为、功能 |
不需要使用 Module Federation 2.0 使用的额外能力 |
MF v1.0 | 基于 webpack.container.ModuleFederationPlugin 实现的版本 | - 已不再迭代 - 我们推荐使用 Module Federation v1.5 或 v2.0 版本 |
从 webpack 迁移到 Rspack 的项目,并且希望逻辑和原有的尽可能保持一致 |
Module Federation 2.0 在 Module Federation 的基础上,开箱即用的提供了一些额外的功能,比如动态 TS 类型提示、Chrome devtool、Runtime plugin、预加载,这些功能让 Module Federation 更适用于支持大型 Web 应用的微前端架构,Module Federation v2.0 在 v1.5 的基础上实现。
你需要安装额外的 @module-federation/enhanced
插件,才能使用 Module Federation v2.0。
请参考 Module Federation v2.0 官方文档 来了解具体的用法。
这是 Rspack 内置支持的版本,除了支持 Module Federation v1.0 的模块导出、模块加载、依赖共享等能力之外,还添加了运行时插件功能,允许用户扩展模块联邦的行为、功能。
你可以通过 Rspack 的 ModuleFederationPlugin 来使用它,无须安装任何插件。
这是为了兼容 webpack.container.ModuleFederationPlugin 实现的版本。
你可以通过 Rspack 的 ModuleFederationPluginV1 来使用它。
Module Federation v1.0 已经不再迭代,我们推荐使用 Module Federation v1.5 或 v2.0 版本。