避免前端巨石应用的策略

Oct 13, 2024

Orange Flower

巨石应用通常指代码过于集中、耦合度高、难以维护和扩展的大型单一应用。

Monorepo单一代码仓库与微前端架构结合

是一种避免巨石应用的前端工程化方案:

  • Monorepo:所有项目代码(包括多个子应用、工具、组件库等)存储在一个单一的 Git 仓库中,通过工具(如 pnpm workspaces等)管理依赖和构建。

  • 微前端:前端应用被拆分为多个独立的小应用,每个小应用可以独立开发、测试、部署,但最终集成到一个统一的页面中运行。使用 iframe、Web Components 或单页应用(SPA)框架来集成多个子应用。

有两种结合方式:1. 在一个 Monorepo 中维护多个微前端子应用和一个主应用,共享公共依赖、工具和配置,同时保持子应用的独立性。2. 多个Monorepo中维护多个微前端子应用,主应用放在外面作为一个独立的代码仓库。多个小组分别维护自己的 Monorepo,但希望复用同一个微前端主应用的场景。

注意点:需要处理子应用之间的通信(如通过事件总线或共享状态)、js隔离和样式隔离。共享依赖的处理:发布共享包到私有 NPM

在 Monorepo + 微前端中的埋点监控性能监控

  • 子应用独立监控、独立上报:独立部署的子应用可以直接在子应用中调用埋点 SDK,不依赖主应用。每个子应用初始化自己的监控 SDK,直接上报错误:捕获 的JavaScript 错误、资源加载失败错误、接口错误等等。

  • 前端性能监控:主应用使用监控整体页面加载时间。每个子应用独立记录自己的加载和渲染时间,上报给主应用或直接发送到后台

  • 主应用监控子应用的加载失败(如 entry 地址不可用)。

  • 子应用记录自己的生命周期时间(如 mount、unmount)。