Vue微前端中动态路由的核心是主应用感知并分发路径变化,通过路由状态同步+运行时配置实现:主应用动态注册兜底路由,子应用响应传入路径,菜单权限数据驱动,跨应用跳转经主应用中转。

Vue 动态路由在微前端中实现主应用动态加载子应用路由,核心不是“把子应用的路由抄进主应用”,而是让主应用能感知、分发、响应子应用的路径变化,同时避免硬编码和重复发布。关键在于路由状态同步机制 + 运行时配置能力。
主应用侧:动态注册子应用路由入口
主应用不预先写死所有子应用路径,而是在启动后拉取子应用元信息(如 name、entry、base path、支持的内部路由列表),再用 router.addRoute() 注册兜底路由:
- 例如子应用配置为
{ name: 'user-center', activeRule: '/user-center' },主应用只需注册一条:{ path: '/user-center/:path(.*)*', name: 'MicroAppLayout', component: () => import('@/layouts/MicroAppLayout.vue') } - 该路由匹配所有以
/user-center开头的路径,把具体子路径(如/user-center/profile)交由子应用自己解析 - 若使用 Umi,可通过 patchRoutes 运行时修改 routes 数组,无需改 config/routes 静态文件
子应用侧:不接管 history,只响应主应用传入路径
子应用必须放弃自主调用 this.$router.push 或 router.push,改为监听主应用下发的路径指令:
将一个或多个 UI 原型图、线框图、产品截图或设计稿转换为标准化、可直接交付的 PRD 风格文档,供产品、设计、前端和测试共同使用。适用于 Codex 需要分析 PC 网页、桌面端、移动端、响应式页面、独立弹窗、表单、表格、看板、数据大屏或多页面流程截图,还原页面结构与交互,强制套用固定文档模板,抽取跨页面共享规则,或把一组原型沉淀为单页规范文档加整体业务流程文档的场景。不适用于纯视觉审美点评、代码实现、接口设计、埋点方案、竞品分析或无 UI 输入的业务需求创作。
- qiankun 场景:在子应用入口监听
window.microApp.addDataListener,接收主应用通过props或data传来的path参数,再执行router.push(path) - micro-app 场景:直接读取
props.data.path,并在mounted或watch中同步到本地路由 - 务必确保子应用路由模式(history/hash)与主应用一致,否则 popstate 不触发,同步链路断裂
菜单与权限联动:路由数据驱动而非代码驱动
左侧菜单项不应写死 to="/user-center/profile",而应从统一权限树生成,每个菜单项携带子应用标识和目标路径:
- 后端返回的菜单结构含字段:
app: 'user-center',path: '/profile',title: '个人资料' - 主应用点击菜单时,拼接完整 URL:
/user-center?subPath=/profile(无界方案)或直接pushState到/user-center/profile(qiankun 方案) - 刷新时,主应用从 URL 解析出
subPath或子路径段,再透传给对应子应用,保证页面可直连
跨子应用跳转:必须经主应用中转
用户在 Vue 子应用内点击跳转到 React 子应用某页面,不能在子应用里直接 router.push('/react-app/dashboard'):
- 正确做法是子应用调用
window.history.pushState({}, '', '/react-app/dashboard') - 主应用监听
popstate或使用 qiankun 的addGlobalUncaughtErrorHandler捕获路由变更 - 主应用识别新路径属于哪个子应用,卸载当前子应用、激活目标子应用,并将路径透传过去
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









