结论:Module Federation 本质是加载异步 Chunk
任何暴露远程模块的一次构建,都可以视为一个容器。
容器可以嵌套使用,也可以引用其它容器的模块,容器之间可也可以依赖循环
容器的创建基于在 Webpack 声明的 entry
导出模块的容器
引用外部模块的容器
// home.js
export const remote1 = {
word: 'home'
}
// Webpack Config
new webpack.container.ModuleFederationPlugin({
// MF 应用名称
name: 'app1',
// MF 模块入口
filename: `remoteEntry.js`,
// 定义应用导出哪些模块
exposes: {
'./home': './src/home',
}
})
// 入口文件
const {remote2} = (await import("app1/home"))
console.log(remote2)
// Webpack Config
new webpack.container.ModuleFederationPlugin({
remotes: {
app1: 'app1@<http://localhost:8080/remoteEntry.js>',
}
})