vue router在微前端中需实现“受控协同”:主应用路由须配置通配路径覆盖子应用前缀,子应用路由模式与base须与主应用严格对齐,内部跳转应使用原生history api;无界方案可自动处理路由同步。

Vue Router 在微前端中配置子应用路由,关键不是让它“独立运行”,而是让它“受控协同”——既要保持自身路由逻辑完整,又要与主应用路径、生命周期和跳转行为对齐。不同微前端方案(如 qiankun、无界)处理方式不同,但核心思路一致。
主应用路由需覆盖子应用路径前缀
主应用的 Vue Router 必须声明能匹配子应用入口路径的兜底路由,否则 URL 变化时主应用无法识别,子应用也不会加载。
- 例如子应用的 activeRule 是
/user-center,主应用路由应配置:{ path: '/user-center/*', component: () => import('@/views/Main') } - 使用
*通配符确保所有子应用内部路径(如/user-center/profile)都能命中该路由 - 该路由组件(如
Main.vue)只需提供一个容器(如<div id="sub-app-container"></div>),不负责渲染具体页面
子应用路由必须对齐主应用模式并设置 base
子应用不能随意用 hash 或 history 模式,必须与主应用严格一致;同时要通过 base 明确自身路由作用域,避免路径冲突或资源加载失败。
使用 `@ainative/vue-sdk` 为 Vue 3 应用添加 AI 聊天功能。适用于以下场景:(1) 安装 `@ainative/vue-sdk`,(2) 在 Vue 组件中使用 `useChat` 组合式函数,(3) 提供……
- 若主应用为
history模式,子应用也必须用history,且base设为与activeRule完全一致的路径,例如:createWebHistory('/user-center') - 若主应用是
hash模式,子应用需设mode: 'hash'并确保base匹配(Vue Router 3 中为base: '/user-center') -
注意:Vue 3 的
createWebHistory第二个参数才是 base,不要误写成import.meta.env.BASE_URL而忽略实际路由前缀
子应用内部跳转必须走原生 history API
qiankun 等沙箱方案会劫持 window.history,但会拦截子应用直接调用 this.$router.push 或 router.push,导致跳转失效或触发重定向错误。
- 正确做法:在子应用中统一使用
history.pushState、history.replaceState或router.push的replace: true配合手动更新 URL - 推荐封装一个跳转函数,自动拼接 base 前缀:
function goTo(path) { history.pushState({}, '', '/user-center' + path); } - 监听路由变化应使用
history.listen(qiankun 提供)或window.addEventListener('popstate', ...),而非依赖 Vue Router 的导航守卫
无界(Wujie)可省去多数手动配置
无界基于 iframe 实现天然隔离,子应用完全不用改路由代码,历史模式照常写,框架自动完成同步。
- 主应用 URL 示例:
https://host.com/micro?subPath=/user/list&subApp=vue2-app - 刷新页面时,主应用从 query 中读取
subPath,自动加载对应子应用并跳转到指定页面 - 菜单点击跳转只需修改 URL query,无界内部会通知 iframe 更新路由状态
- 适合快速接入、不想深挖沙箱机制的团队
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!









