微前端架构
微前端的核心思想
模块化:每个微前端模块都是独立的,可以使用自己的技术栈、依赖、部署流程。
独立性:不同的微前端模块可以由多个团队各自独立开发,互不干扰。
灵活集成:最终可以由多个模块集成到一个页面上。
隔离性:每个模块避免相互依赖。
微前端的优势
模块可以独立开发和部署:各个团队可以独立开发和部署不同的微前端模块。
每个模块技术栈各自独立:不同的微前端模块可以选择不同的技术栈。
可渐进式升级:可以渐进的重写原有代码。
可维护性高:微前端架构使得整个系统易于维护。
微前端的实现方式
iframe
iframe嵌入页面,每个页面是一个单独的应用。这个方案性能很差,iframe之间很难通信。
Web Components
Web Components是浏览器原生支持的组件方案,允许创建自定义元素。
Module Federation
webpack5引入了Module Federation来做微前端。
Module Federation允许不同的前端模块动态加载其他模块的代码。
基于路由分发
可以使用不同的路由区分不同的微前端模块,基于路由分发请求到微前端模块。
Single-SPA
Single-SPA框架允许多个微前端同时在一个页面运行,支持三大框架。
Single-SPA是将不同的微前端应用通过路由进行管理(先注册所有应用的路由,根据URL匹配应用),使得每个微前端应用可以独立加载、渲染、卸载。
Single-SPA支持React、Vue、Angular。
qiankun
qiankun基于Single-SPA做了优化,支持在同一个页面中挂载多个微前端应用,提供了简单地API和开箱即用的方案。
实际开发中一般选择qiankun做微前端。