qiankun预研

248 阅读2分钟

价值

场景

大型长周期后台管理项目(正符合内勤组后台系统和中台管理系统特点)

作用

  • 增加可维护性

    • 当前主应用能用接入老旧技术栈的前端页面
    • 子应用可以接入其他技术栈的应用,降低协作门槛
  • 解决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
  • 不应滥用:在能通过一个应用解决问题时,应经可能用一个应用解决,技术栈应尽可能统一,只在有必要时接入微前端