微前端架构是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。
微服务与微前端,都是希望将某个单一的单体应用,转化为多个可以独立运行、独立开发、独立部署、独立维护的服务或者应用的聚合,从而满足业务快速变化及分布式多团队并行开发的需求。
在某些场景下,微前端也包含了对于系统的纵向切分;即不同的团队会负责系统中某个特性 / 模块,从数据库、服务端到用户界面完整的流线。每个团队会更多地着眼于业务模型与特点。独立并不意味着完全的切割,各个特性 / 模块之间的共现组件可以通过 NPM/Git Submodule 等方式进行协同开发与复用。
微前端的落地,需要考虑到产品研发与发布的完整生命周期,具体而言,我们可能从应用组合、应用隔离、应用协调与治理、开发环境等几个方面进行考虑:
1. 应用组合:
组合时机,在构建时组合,还是在运行时组合
应用路由,如何根据 URL 加载 / 导航到不同的页面,如何根据子应用界面的变化切换 URL
应用加载,确定加载应用的版本,依赖于框架的加载机制,还是采用 AMD 或者 SystemJS 异步加载
2. 应用隔离:
应用容错,某个应用的崩溃不应影响到其他应用或容器应用
样式隔离,避免 CSS 相互污染
DOM 隔离,避免子应用操作非自身作用域内的结点
3. 应用协调与治理:
统一配置与切换,主题,利用 CSS Variables 等方式动态换肤
应用的生命周期,规范化子应用的生命周期,并且在不同生命周期中执行不同的操作
数据共享,子应用间数据共享
服务共享,跨应用数据共享与服务调用
组件共享,可能将某个纯界面组件或者业务组件以插件 (Plugin) 或者部件 (Widget) 的方式共享出去;提供某个计算能力。
4. 开发环境:
跨技术栈支持
统一的构建流程与规范
打桩、埋点与 Hijack
领取专属 10元无门槛券
私享最新 技术干货