模块联邦通过配置expose、remotes和shared实现跨应用模块共享。Remote应用暴露模块,Host应用动态导入并加载远程模块,同时共享依赖避免重复引入,运行时动态解析与加载,支持微前端独立构建与集成。

Webpack 5 的模块联邦(Module Federation)通过在构建时和运行时动态共享 JavaScript 模块,实现跨应用的代码复用。它允许一个应用(Host)在运行时从另一个应用(Remote)加载并执行模块,而无需将这些模块打包进本地 bundle。
在远程应用(提供方)的 Webpack 配置中,使用 red">ModuleFederationPlugin 暴露需要共享的模块:
示例配置:
new ModuleFederationPlugin({
name: 'remoteApp',
filename: 'remoteEntry.js',
exposes: {
'./Button': './src/components/Button',
'./utils': './src/utils/common'
},
shared: { ...deps, react: { singleton: true }, 'react-dom': { singleton: true } }
})
主应用(消费方)在配置中引入远程应用,并通过 import 动态加载其暴露的模块:
立即学习“Java免费学习笔记(深入)”;
示例配置:
new ModuleFederationPlugin({
name: 'hostApp',
remotes: {
remoteApp: 'remoteApp@https://remote-domain.com/remoteEntry.js'
},
shared: { react: { singleton: true }, 'react-dom': { singleton: true } }
})
使用方式:
const Button = await import('remoteApp/Button');
通过 shared 配置项,多个应用可共用同一版本的第三方库(如 React、Lodash),提升性能:
当 Host 应用请求远程模块时,执行过程如下:
基本上就这些。模块联邦让微前端架构中的应用真正实现运行时集成,既独立构建又可共享逻辑,关键是配置好 expose、remotes 和 shared 三部分。不复杂但容易忽略细节,比如版本对齐和 singleton 设置。
以上就是在模块联邦中,Webpack 5 如何实现 JavaScript 代码的跨应用共享?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号