Skip to content

实战手册(Recipes) ​

按真实场景组织的 ng-mfe 落地配方:每篇聚焦一个问题,给出可直接套用的 API 用法、工作机制与注意事项。

场景索引 ​

通信与状态 ​

配方一句话场景难度
跨应用事件发布订阅子应用之间用 dispatch/on 广播与监听事件,onAny 全局审计入门
RPC 双向调用一个应用向另一个应用发起带超时的请求/响应调用入门
登录用户全局共享Portal 登录后把 currentUser 写入共享状态,各框架子应用订阅入门
受保护键与持久化用 protectedKeys 防止子应用篡改关键状态,用 persistKeys 落盘进阶

网络与缓存 ​

配方一句话场景难度
Token 自动刷新注册 onRefresh 处理器,定时提前刷新、并发单飞、失败登出进阶
并发 GET 请求去重多个子应用同时打同一个接口时只发一次真实请求进阶
getOrSet 单飞缓存缓存未命中时并发调用共享一次工厂计算,防缓存击穿入门
HTTP 重试策略用 RetryPolicy 定制指数退避重试与幂等方法约束进阶
子应用 Mock 接口registerAppMockRules 声明规则,Portal 自动合并拦截入门

性能与界面 ​

配方一句话场景难度
预加载与保活preload 空闲预载资产,coexist 卸载时停放而非销毁进阶
地图图层动态加载图层声明式注册、按需懒加载、瓦片缓冲分档进阶
地图图层权限过滤requiredPermission + setPermissionFilter 按 ACL 收敛图层可见性进阶
跨应用组件复用registerMfeComponent 注册、MfeComponentLoader 消费入门
功能开关灰度FeatureFlagService 按布尔/条件控制子应用特性开关入门

主题与体验 ​

配方一句话场景难度
明暗主题切换setLayout({theme}) → 共享状态 → data-theme 属性 → CSS 变量入门
多语言与菜单翻译register/use/fanyi 插值复数与语言回退链入门
WebSocket 长连接自动重连、状态订阅、消息自动 JSON 解析进阶
通知中心与确认框四级通知 API、宿主注入确认 UI、未读数驱动界面入门

使用约定 ​

  • 代码假定你已经从 MfeBootstrapContext(即 bootstrap(ctx) 的 ctx)取到服务实例:ctx.eventBus、ctx.sharedState、ctx.acl、ctx.auth、ctx.cache、ctx.settings、ctx.menu、ctx.i18n、ctx.httpPipeline。Portal 侧则是自己 new 出这些单例并传入 MfeEngine 的第二个参数。
ts
// 子应用侧:ctx 是 bootstrap 注入的上下文
defineMfeApp('my-app', {
  async bootstrap(ctx) {
    const unsub = ctx.eventBus.on('some:event', () => { /* ... */ });
    cleanupFns.push(unsub); // 退订函数统一收集,destroy 时调用
  },
  async destroy() {
    cleanupFns.forEach(fn => fn());
  },
});
  • 代码块均标注语言(ts / html / css / mermaid),API 名称与默认值均以源码为准,未在本页出现的参数请查阅 API 参考。
  • 每个订阅型 API(on/subscribe/onChange 等)都返回退订函数,请在应用的 destroy() 中统一调用,避免泄漏。

如何选择配方 ​

延伸阅读 ​

基于 MIT License 发布