@@ -175,6 +175,55 @@ src/projects/
175175
176176---
177177
178+ ## 🧩 微前端(Webpack Module Federation)POC
179+
180+ 在“多项目模式”的基础上,仓库提供一个 ** Webpack Module Federation** 的最小可运行 POC:
181+
182+ - Shell(host) 统一承载与导航
183+ - projectA/projectB 以 remote 的形式被动态加载
184+ - 目标部署形态:** 同域名不同 path** (例如 ` / ` 、` /projectA/ ` 、` /projectB/ ` )
185+
186+ ### ✅ 本地联调(3 个 devServer)
187+
188+ 1 ) 启动两个 remote:
189+
190+ - ` npm run start:mf:projectA ` (默认 ` http://localhost:8081/ ` ,remoteEntry:` /remoteEntry.js ` )
191+ - ` npm run start:mf:projectB ` (默认 ` http://localhost:8082/ ` ,remoteEntry:` /remoteEntry.js ` )
192+
193+ 2 ) 启动 Shell(host):
194+
195+ - ` npm run start:mf:shell ` (默认 ` http://localhost:8080/ ` )
196+
197+ 3 ) 访问:
198+
199+ - ` http://localhost:8080/#/portal `
200+ - ` http://localhost:8080/#/projectA `
201+ - ` http://localhost:8080/#/projectB `
202+
203+ ### 📦 生产构建与同域名不同 path 部署
204+
205+ - Shell(host):` npm run build:mf:shell ` → 输出到 ` dist-shell/ `
206+ - projectA(remote):` npm run build:mf:projectA ` → 输出到 ` dist-projectA/ `
207+ - projectB(remote):` npm run build:mf:projectB ` → 输出到 ` dist-projectB/ `
208+
209+ 推荐的网关/Nginx 映射(示意):
210+
211+ - ` / ` → ` dist-shell/ `
212+ - ` /projectA/ ` → ` dist-projectA/ `
213+ - ` /projectB/ ` → ` dist-projectB/ `
214+
215+ 其中 remoteEntry 在生产默认按路径引用:
216+
217+ - projectA:` /projectA/remoteEntry.js `
218+ - projectB:` /projectB/remoteEntry.js `
219+
220+ 说明:
221+
222+ - 目前路由使用 Hash Router(` /#/... ` ),通常不依赖 history fallback。
223+ - 这是 POC:remote 暴露的是 ` src/projects/<project>/mfe/App.tsx ` 对应的 ` ./App ` 模块;Shell 通过 ` import('projectA/App') ` / ` import('projectB/App') ` 动态加载。
224+
225+ ---
226+
178227## 📝 近期主要更新
179228
180229- ⚡ ** 性能优化** :重构 ` KeepAlive ` 实现,支持 React 19 ` <Activity> ` (Offscreen) 原生冻结,降级模式采用 CSS 显隐替代 DOM 移动,大幅减少重排
0 commit comments