微前端(Micro-Frontends)是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立运行、独立开发、独立部署。微前端不是单纯的前端框架或者工具,而是一套架构体系
价值
- 技术栈无关
- 解耦,方便维护,独立开发,独立部署提高开发效率(一个项目太臃肿跑起来慢)
- 增量升级
文章推荐
已有实现方案缺点
- nginx路由 页面会刷新
- iframe 加载慢、通信难、双滚动条等样式问题
- npm 更新后需要引用方重新部署才能生效,难维护、技术栈耦合
- single-spa js、css污染、JS Entry限制了打包方式、通信
- qiankun
主流框架实现
single-spa
- 加载微应用(加载方法还是用户自己提供的)
- 维护微应用状态(初始化、挂载、卸载)。 详情请看:juejin.cn/post/703738…
qiankun
- 基于 single-spa 封装,提供了更加开箱即用的 API。
- 📱 技术栈无关,任意技术栈的应用均可 使用/接入,不论是 React/Vue/Angular/JQuery 还是其他等框架。
- 💪 HTML Entry 接入方式,让你接入微应用像使用 iframe 一样简单。
- 🛡 样式隔离,确保微应用之间样式互相不干扰。
- 🧳 JS 沙箱,确保微应用之间 全局变量/事件 不冲突。
- ⚡️ 资源预加载,在浏览器空闲时间预加载未打开的微应用资源,加速微应用打开速度。
- 🔌 umi 插件,提供了 @umijs/plugin-qiankun 供 umi 应用一键切换成微前端架构系统。 详情请看:juejin.cn/post/703968…
其他实现方案
- MicroApp(Web Components) 极致简洁的微前端框架-京东MicroApp开源了 - cangdu - 博客园
- ESM(ES Module)
- EMP(webpack5 module Federation) github.com/efoxTeam/em…