微前端架构

66 阅读1分钟

一、背景/出现原因

iframe 的弊端

iframe 就相当于页面里再开个窗口加载别的页面,但是它有很多弊端:

  • 每次进来都要加载,状态不能保留
  • DOM 结构不共享。比如子应用里有一个 Modal,显示的时候只能在那一小块地方展示,不能全屏展示
  • 无法跟随浏览器前进后退
  • 天生的硬隔离,无法与主应用进行资源共享,交流也很困难

而 SPA 正好可以解决上面的问题:

  • 切换路由就是切换页面组件,组件的挂载和卸载非常快
  • 单页应用肯定共享 DOM
  • 前端控制路由,想前就前,想后就后
  • React 通信有 Redux,Vue 通信有 Vuex,可与 App 组件进行资源共享,交流很爽

二、解决什么问题,

解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用后,随之而来的应用不可维护的问题。

  1. 独立发布
  2. 存量系统增量迁移/重构
  3. 将大型巨石应用拆分
  4. 允许各个技术团队自行选择技术框架

三、应用场景

四、架构模式

  1. 基座模式(中心化)。通过一个主应用来管理其他应用。设计难度小、方便实践,但是通用度低。

  1. 自组织模式(去中心化)。应用之间是平等的,不存在相互管理的模式。设计难度大,不方便实施,但是通用度高。

四、主流方案对比,优劣比较

  1. Single-Spa
  2. 乾坤
  3. webpack5 模块联邦
  4. EMP
  5. icestark

五、最佳实践