前端面试笔记(1)——微前端
微前端是一种多个团队通过独立发布功能的方式来构建现代化web应用的技术手段以及方法策略。通俗的说就是可以将一些独立开发、部署、测试的应用放在一个父应用中运行,并且可以实现通信
微前端借鉴了微服务的架构理念,将一个庞大的前端应用拆分为多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用联合为一个完整的应用。
特性
- 技术栈无关 主应用不限制子应用的技术栈,子应用可以自主选择技术栈
- 独立开发/部署
- 增量升级
- 独立运行 微应用独立运行时互不依赖,有独立的状态管理
- 提升效率 应用越大越复杂,就越难以维护,协作效率低下。微前端可以很好的拆分,提升效率
微前端方案
- 基于 iframe 完全隔离方案
- 基于 single-spa 路由劫持方案
- 阿里 qiankun
qiankun 对 single-spa 做了一层封装。主要解决了 single-spa 的一些痛点和不足。通过 import-html-entry 包解析 HTML 获取资源路径,然后对资源进行解析、加载。
qiankun 可以用于任意 js 框架,微应用接入像嵌入一个 iframe 系统一样简单。qiankun@2.0 将跳出 route-based 的微前端场景。
优点
1. 阿里团队开发维护,文档多。
2. 基于single-spa 封装,提供了更加开箱即用的 API。
3. HTML Entry 接入方式,让你接入微应用像使用 iframe 一样简单。
4. 样式隔离,确保微应用之间样式互相不干扰。
5. JS 沙箱,确保微应用之间 全局变量/事件 不冲突。
6. 资源预加载,在浏览器空闲时间预加载未打开的微应用资源,加速微应用打开速度。
7. umi 插件,提供了@umijs/plugin-qiankun 供 umi 应用一键切换成微前端架构系统。
8. 兼容IE11
缺点
1. 上线部署文档较少
2. qiankun 只能解决子项目之间的样式相互污染,不能解决子项目的样式污染主项目的样式 - 京东 micro-app 方案
具体可参考原文链接:什么是微前端