map是前端微服务中管理子应用路由注册表的首选方案,支持以子应用名为键存储路由配置,便于动态增删查改、热注册卸载,并需通过暴露注册函数等方式安全共享实例。

在前端微服务架构(如 qiankun、micro-app 等)中,Map 是管理各子应用路由注册表的轻量、高效且语义清晰的选择。它天然支持以子应用唯一标识(如 appA、appB)为键,存储其对应的路由配置(如路径前缀、路由规则、入口函数等),避免全局对象污染,也便于动态增删查改。
用 Map 存储子应用路由元信息
每个子应用注册时,将自身路由核心信息写入共享的 Map 实例,例如:
- 键(key):子应用名称(字符串)或唯一 ID(推荐使用注册时约定的 name 字段)
-
值(value):一个包含
base(基础路径)、routes(匹配规则数组)、loadApp(加载函数)、activeRule(激活条件)等字段的对象
示例:
const appRouteRegistry = new Map();
appRouteRegistry.set('dashboard', {
base: '/dashboard',
routes: [
{ path: '/', component: DashboardHome },
{ path: '/metrics', component: MetricsView }
],
loadApp: () => import('./apps/dashboard/bootstrap'),
activeRule: location => location.pathname.startsWith('/dashboard')
});
appRouteRegistry.set('user-center', {
base: '/user',
routes: [{ path: '/profile', component: ProfilePage }],
loadApp: () => import('./apps/user/bootstrap'),
activeRule: location => location.pathname.startsWith('/user')
});
配合主应用路由守卫做动态匹配
主应用(如基于 React Router 或 Vue Router)可在路由跳转前遍历 Map,查找匹配的子应用并决定是否激活或预加载:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
- 监听
history变化或使用路由的beforeEach/router.subscribe - 遍历
appRouteRegistry.values(),调用每个activeRule判断当前路径是否属于该子应用 - 命中后,可触发子应用挂载、懒加载资源,或透传路由参数
这样无需硬编码所有子应用路径,扩展新子应用只需 set 一条记录,解耦清晰。
支持运行时热注册与卸载
微服务强调动态性。Map 天然支持 delete() 和 clear(),适合子应用卸载、灰度下线或沙箱销毁场景:
- 子应用 unmount 后,调用
appRouteRegistry.delete('legacy-report') - 主应用可监听子应用生命周期事件(如
unmounted),自动清理对应路由条目 - 调试时也可手动
console.log([...appRouteRegistry.keys()])快速查看当前已注册子应用
注意跨沙箱环境下的 Map 实例共享
在 qiankun 等沙箱模型中,子应用运行在独立执行上下文,无法直接访问主应用的 Map 实例。需通过以下方式安全共享:
- 主应用将
appRouteRegistry挂载到window(如window.__MICRO_APP_ROUTE_MAP__),并确保子应用沙箱配置允许读取(qiankun 中需开启sandbox: { experimentalStyleIsolation: false }或使用getPublicPath注入) - 更推荐方式:主应用暴露统一注册函数(如
window.registerMicroAppRoute),内部操作私有Map,子应用只调用不直接访问 - 避免在子应用中修改主应用
Map,所有写操作应由主应用封装方法控制,保障数据一致性
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










