模块联邦是Webpack 5实现微前端的核心技术,允许运行时动态加载远程应用模块。通过配置exposes暴露子应用组件,remotes在主应用按需引入,实现独立部署、灵活共享依赖与运行时集成,适用于多团队协作、渐进式迁移等场景。
微前端架构让多个团队可以独立开发、部署前端应用,同时还能在同一个页面中协同工作。模块联邦(Module Federation)是 Webpack 5 提供的一种原生能力,它让 JavaScript 模块可以直接跨应用共享,无需发布到 npm 或构建时打包,真正实现了运行时的模块加载与通信。
模块联邦允许一个 Webpack 打包的应用在运行时动态加载另一个 Webpack 打包应用中的模块。这意味着你可以把微前端中的子应用当作“远程模块”来使用,主应用能直接引用子应用暴露的组件、函数甚至状态管理模块。
核心优势在于:
以主应用(Host)和子应用(Remote)为例,通过 Webpack 配置启用模块联邦。
子应用配置(Remote)子应用需要暴露自己的模块,比如一个 React 组件:
// webpack.config.js (子应用)
const { ModuleFederationPlugin } = require("webpack").container;
module.exports = {
plugins: [
new ModuleFederationPlugin({
name:
"userApp",
filename: "remoteEntry.js",
exposes: {
"./UserProfile": "./src/components/UserProfile",
},
shared: ["react", "react-dom"],
}),
],
};
主应用配置(Host)
主应用远程导入子应用暴露的模块:
// webpack.config.js (主应用)
new ModuleFederationPlugin({
name: "mainApp",
remotes: {
userApp: "userApp@http://localhost:3001/remoteEntry.js",
},
shared: ["react", "react-dom"],
});
在主应用中使用远程组件
// App.js
import React, { Suspense } from "react";
const RemoteUserProfile = React.lazy(() => import("userApp/UserProfile"));
function App() {
return (
主应用
);
}
export default App;
模块联邦特别适合以下场景:
虽然模块联邦强大,但实际使用中需要注意:
基本上就这些。模块联邦降低了微前端的实现门槛,让前端应用间的解耦与集成变得更自然。只要合理规划模块边界和通信方式,就能构建出灵活、可扩展的大型前端系统。
# vue
# react
# javascript
# java
# js
# 前端
# npm
# 浏览器
# app
# ai
# 前端应用
# red
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11怎么设置夜间模式_Windows11显示设置蓝光过滤强度
Win11怎么打开注册表_Windows 11注册表编辑器启动命令【步骤】
c++中的CRTP是什么 c++奇异递归模板模式【进阶】
Windows10电脑怎么设置自动连接WiFi_Win10无线网络属性勾选
Windows10系统怎么查看CPU温度_Win10性能监视器查看硬件数据
Win11怎么设置任务栏透明_Windows11使用工具美化任务栏
Django 测试数据库表缺失与字段未创建问题的完整解决方案
Win10如何卸载微软拼音输入法 Win10只保留一个输入法【教程】
如何使用Golang reflect检查方法数量_动态分析类型方法
Win10怎样设置多显示器_Win10多显示器扩展设置【攻略】
c# 如何深拷贝和浅拷贝
Win11怎么设置组合键快捷方式_Windows11自定义快捷键操作
c++输入输出流 c++ cin与cout格式化输出【方法】
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
海外搜索引擎推广效果怎么样,怎么分析效果!
如何在Golang中配置代码格式化工具_使用gofmt和goimports
如何使用Golang实现跨域请求支持_Golang CORS配置与处理方法
Win11任务栏怎么固定应用 Win11将软件图标固定到底部【步骤】
如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理
windows如何修改文件默认打开方式_windows设置程序关联教程
Windows怎样关闭Edge新标签页广告_Windows关闭Edge新标签页设置【步骤】
PHP的FastAdmin架构适合二次开发吗_特点分析【介绍】
Mac如何开启夜览模式_Mac护眼模式设置与定时
Win11怎么设置虚拟键盘_打开Win11屏幕键盘操作指南【技巧】
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
Windows10怎么备份注册表_Windows10注册表备份步骤【教程】
c++怎么调用nana库开发GUI_c++ 现代风格窗口组件与事件处理【实战】
Win10怎么设置开机密码_Windows10账户登录密码设置与取消
如何使用Golang开发基础文件下载功能_Golang HTTP文件响应与缓存实现
本地php环境出现502错误_nginx或apache502badgateway解决技巧【解答】
Win10怎么更改用户名 Win10修改账户名称操作教程
Win11怎么退出微软账户_切换Win11为本地账户登录方法【详解】
Python字符串操作教程_切片拼接与格式化详解
Win11怎么开启空间音效_Windows11耳机杜比音效与Sonic设置
Windows10系统怎么查看运行时间_Win10 CPU正常运行时间查询
Go语言中正确反序列化多个同级XML元素为结构体切片的方法
如何在Golang中使用log包输出不同级别日志_Golang log日志管理与分类
Windows 10自带杀毒软件在哪_Windows 10打开和使用Windows安全中心
用Python构建微服务架构实践_FastAPI与Django对比详解
Windows 10怎么把任务栏放在屏幕上方_Windows 10解锁任务栏并拖动位置
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
如何提升Golang程序I/O性能_Golang I/O密集型程序优化示例
如何在Golang中实现并发消息队列消费者_Golang channel消息消费实践
Python 模块的 __name__ 属性如何由导入方式决定?
php485函数怎么捕获异常_php485错误处理机制设置技巧【操作】
Win11如何关闭游戏模式 Win11禁用Xbox Game Bar录制【优化】
使用类变量定义字符串常量时如何实现类型安全的 Literal 注解
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
Win11屏幕亮度突然变暗怎么解决_自动变暗问题处理
如何在Windows中创建新的用户账户?(标准与管理员)
2025-11-19
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。