微前端听课笔记
1. 项目大之后应该如何拆分
1.1 单 SPA 页面的结构应该是什么样的?
- 组件层
- 页面层(对应 route}
有时还要有一个容器层,用处装载多个组件(但不是页面)的情况
- 网络层
- 脚本
- 配置项
- 静态资源
- 工具类
那么拆分的依据是什么呢?有时候是基于业务拆分(水平拆分),有时候是基于体量拆分(垂直拆分)
1.2 多个前端项目需要对接同一套服务端,因为每个项目的团队不同,如何让大家遵循同一套规范?
- 写文档 + 代码 review,通过人工的方式进行规范。
- 封装一个请求库,大家统一调用。
1.2.1 思考:如果需要对请求库进行封装,那么应该考虑哪些方面?
包含内容:
- 缓存
- 请求合并
- 时间窗口
- 指数补偿
- ....
请求库原则:
- 开箱即用
- 独立工作
稳定不出错(其实我觉得这个应该排第一)
1.2.2 拓展学习 & 借鉴
qs 源码研究
- skedo 源码研究
2. 微前端
微前端的本质是拆分
微前端指的是
按照一定的规则拆分前端项目直到不可再分
。- 基于业务(核心):广告、商品、即时通讯
- 基于技术(支撑):组件库、请求库、领域对象、脚手架、打包工具
- 基于共性(通用):通信库、单点登陆、公共组件、数据收集、监控
微前端的每个项目可以独立开发、测试、部署、上线。
微前端的前提是有完善、健全的前端生态,而这种生态的积累、技术沉淀需要日积月累。只有充足的前端生态建设,才有微前端使用的可能。
微前端为什么不用 iFrame?因为 iFrame 有一定的性能损耗;iFrame 会割裂技术栈。
3. 微前端の难题
多个前端项目是否需要互相通信?
- 当共性项目发生变更时如何通知?
- 多个项目间如何共享配置?
- 一个应用上线如何做到影响最小?
- 公共依赖怎么处理?
4. 网络 SDK 和前端网关
5. 场景训练:前端共享配置
简单的说是使用 zookeeper + node 搭建了一套数据库读写
6. 新知识点了解、学习
7. 课后疑问
- 网络请求库的时间窗口是什么?
- 针对
前端共享配置
,本质上还是微服务的网关 + api 的那一套,无非是这个微服务是由前端来维护的。这就是微前端吗?