2022-08-29 18:16:50
模块联邦通过拿裤运行时共享代码实现微前端高效集成,主应用配置remotes加载远程子应用,子应用用exposes暴露模块,shared确保依赖去重,实现跨应用代码调用与独立部署。
核心实现原理name:应用的唯一标识,用于区分不同应用。
remotes:声明主应用需要加载的远程应用及其入口文件路径。
exposes:子应用暴露的模块路径,供其他应用调用。
shared:定义共享依赖(如React、Vue),避免重复加载和版本冲突。
以React主应用集成用户管理(userApp)和订单中心(orderApp)两个子应用为例:
在Webpack配置中,通过remotes指向子应用的远斗坦程入口文件,例如:remotes: { userApp: 'userApp@
使用时像导入本地模块一样调用远程组件,例如:import UserList from 'userApp/UserList';function App() { return <UserList />;}
通过exposes暴露需要共享的模块,例如:exposes: { './UserList': './src/components/UserList.jsx'}
配置shared确保核心依赖(如React、React Router)只加载一次,例如:shared: { react: { singleton: true, eager: true }, 'react-dom': { singleton: true, eager: true }}
模块联邦解决了传统微前端方案(如iframe)的以下问题:
通过合理设计应用边界和共享规则,模块联邦使微前端架构从“硬拼接”升级为“软融合”,成为现代前端架构的重要工具。