价值
场景
大型长周期后台管理项目(正符合内勤组后台系统和中台管理系统特点)
作用
-
增加可维护性
- 当前主应用能用接入老旧技术栈的前端页面
- 子应用可以接入其他技术栈的应用,降低协作门槛
-
解决iframe的一些问题
- 慢
- dom结构不共享,弹框居中都不好做
- 主应用与iframe应用交互困难
限制
项目布局
- 主应用:应提供侧边栏,面包屑等layout部分的功能,本身应能编写main部分的内容
- 子应用:应只是main窗口的内容
- 主应用应提供有用的信息给子应用,但自应用应尽可能少的与主应用交互,交互应通过 CustomEvent Api
项目配置
-
主应用
-
子应用
-
无法直接接入vite,及时接入点也会丧失qiankun的沙箱能力
-
webpack需做响应改造,包括
- 允许跨域
- 唯一的项目名(package.json name)
- 一些构建用和项目运行用的全局变量
- 打包产物(
vue.config.js或者webpack.config.js)改造
-
-
路由模式
-
官方的react demo(最方便、干净,无隐患,但不符合当下多数改造场景)
- 主应用路由使用 history;
- 子应用路由使用memory history,即不通过浏览器地址栏来维护自身路由状态。
-
主应用为vue3,子应用为vue2时
- 主应用和子应用无法同时使用hash mode 主应用为vue2也一样,用vue-element-admin试过了 这个主应用和子应用都是hash的没用到嵌套路由,价值不高
- 主应用使用history时,子应用可以使用abstract或者hash
- 主应用使用hash时,子应用可以使用abstract
-
-
不应滥用:在能通过一个应用解决问题时,应经可能用一个应用解决,技术栈应尽可能统一,只在有必要时接入微前端。