初识前端微服务

238 阅读1分钟

Monolith模式的问题

  1. 开发成本

    避免干扰到其他模块

    理解困难,需要多方开发保持一致

  2. debug成本

    别人的代码影响

  3. 迁移调整成本

    基础架构调整成本,基本上很难改变

  4. 部署和版本管理成本

    上线慢

需要解决的的问题

  1. 全局样式的冲突。
  2. JS 可能存在全局污染的问题。
  3. 某些库多版本。

微服务需要

  1. 服务发现
  2. 运行隔离
  3. 环境一致

服务发现

用服务发现的方式去组织微前端,除了使复杂的上线流程变得解耦、快捷,还可以使拆散之后的工程版本方便对齐,实现更高的稳定性和可调试性。

最重要的收益是快速上线,独立切换

运行隔离

  1. 变量保护:全局变量、DOM和CSS基本都是走的这条路。前后两次快照,我们来比较,之后根据需要帮你恢复现场。这块内容不细说了,看一眼图就不言而喻:一次比较对照所有 key、两次遍历、黑名单 location、白名单 readonly。估计我这样一说大家都懂。
  2. 沙盒时序: 下图是我们做的ABCDE五个模块的加载和混行的时序图。虚线左边是加载,右边是独占线程所占用的时间。也就是说有 ABCDE五个模块五个沙盒,分别在这个模块编译(下载、创建js变量和函数、运行这些语句、最终生成一个 React Component)和运行时(这个模块被打开、渲染对应的所有功能)。