什么是 Module Federation(模块联邦)?解决什么问题?
Module Federation 是 Webpack5 的特性,让多个独立构建的应用在运行时互相加载对方导出的模块,实现「运行时共享代码」,是微前端的主流方案之一。
// app1 (remote)
new ModuleFederationPlugin({
name: 'app1',
filename: 'remoteEntry.js',
exposes: { './Button': './src/Button' }
})
// app2 (host) 远程消费
remotes: { app1: 'app1@https://app1.com/remoteEntry.js' }
import Button from 'app1/Button' // 运行时从 app1 拉取解决的问题:
- 多个团队独立开发部署,却能在运行时拼装成一个产品
- 共享依赖(如都依赖的 react)只加载一份,避免重复打包
- 独立部署:某个微应用更新不必重新构建整个巨石应用
注意:版本/运行时一致性需治理;Vite 生态有
vite-plugin-federation提供类似能力。