模块联邦是Webpack 5实现微前端的核心技术,允许应用在运行时动态共享模块。通过expose暴露组件、remotes引入远程模块,并借助shared优化依赖,实现跨应用代码复用与独立部署,适用于多团队协作、系统迁移和插件化架构场景。
微前端架构中,模块联邦(Module Federation)是 Webpack 5 提出的一种革命性方案,它让不同前端应用在运行时动态共享代码成为可能。不同于传统的依赖打包或组件库发布模式,模块联邦允许一个构建好的应用直接暴露模块,被另一个应用按需加载和使用,真正实现跨应用的代码复用和独立部署。
模块联邦是 Webpack 5 内置的一项功能,核心思想是“将应用变成可被引用的模块仓库”。每个微前端应用可以:
这种机制打破了传统打包时静态依赖的限制,实现了真正的运行时集成。
假设我们有两个项目:一个是主机应用(host),另一个是远程组件库(remote)。以下是关键配置片段。
远程应用(Remote App)配置:
new ModuleFederationPlugin({主机应用(Host App)配置:
new ModuleFederationPlugin({配置完成后,主机应用就可以像导入本地模块一样使用远程组件:
import Button from 'remoteApp/Button';模块联邦通过 shared 配置避免重复加载第三方库。常见做法包括:
这样既能保证运行一致性,又能减少包体积和内存占用。
模块联邦特别适合以下场景:
它降低了系统耦合度,同时保留了技术栈灵活性。
基本上就这些。模块联邦不是银弹,但它为微前端提供了一种原生、高效且低侵入的集成方式。只要合理规划暴露边界和依赖管理,就能大幅提升前端架构的可维护性和扩展性。