目录

什么是微前端

微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用,这样才能确保微应用真正具备独立开发、独立运行的能力。

一、微前端的概念

微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用,这样才能确保微应用真正具备独立开发、独立运行的能力。

微前端借鉴了微服务的架构理念,将一个庞大的前端应用拆分为多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用联合为一个完整的应用。微前端既可以将多个项目融合为一,又可以减少项目之间的耦合,提升项目扩展性,相比一整块的前端仓库,微前端架构下的前端仓库倾向于更小更灵活。

二、微前端的作用

1、应用很小

应用程序变小了,您不必下载大型代码库,而只需要等待10分钟即可安装所有依赖项。 想象一下,您加入了一家公司并名列前茅次克隆了存储库,而您必须等待15分钟才能下载依赖项并编译项目。 当您查看源代码时,有成千上万的组件被编写,您甚至都不知道在哪里寻找或在哪里进行更改等。如果您的应用程序足够小,则可以更快,更轻松地浏览应用程序。

2、应用独立

由于所有应用程序都是分开划分和开发的,因此它们彼此独立。 当您拥有一个整体应用程序时,您有太多彼此依赖的模块和组件,从而导致在哪里进行更改或在哪里寻找外观等方面的困惑。设想一个场景,您必须在现有的整体应用程序中进行一些更改,并且 5个不同的团队为此工作。 有时,您每次必须召开一次会议,从所有团队中查找信息大约需要2周的时间。 如果应用程序具有明确定义的边界并允许一个专门的团队专注于此,通常可以节省大量时间。

3、应用程序更易于理解

应用程序较小,由一个团队开发,因此更易于理解。 由于这些应用程序具有明确的界限,并且由一个团队开发,因此它们通常遵循一致的样式指南,这使它更易于理解。 对于大型应用程序,有几个团队在处理它,而他们通常不遵循一致的样式指南。 您甚至可以定义一个好的项目结构,因为用于项目的组件或服务数量很少。

4、应用程序更易于开发和部署

由于这些应用程序的性质很小,并且由一个团队开发,因此非常容易开发和部署。 我们甚至可以独立部署。 当您在Jenkins上拥有大型应用程序的构建管道时,由于拥有成千上万的组件,因此需要等待20至40分钟才能下载并编译该项目。 当您为每个微型应用程序定义单独的管道时,使用微型前端可以大大减少这些构建时间。

5、应用程序更易于测试

我们必须为大型应用程序编写成千上万的单元测试,并且要花很多时间才能运行。 这会使我们的部署过程变慢。 当涉及到微型前端时,每个应用程序只有很少的单元测试,并执行自己的单元测试,并且可以独立运行。

6、独立的堆栈和版本

我们可以为每个应用选择自己的堆栈,但是这种情况很少发生,但是我们可以在同一堆栈中使用不同的版本。 例如,某些团队具有灵活性和时间来引入和测试同一堆栈的较新版本。 例如,React很好,可以灵活地完成任务,而Angular可以很好地满足其他要求,您可以根据自己的需要选择框架,而不必依赖以前的开发人员或以前的团队就开始使用它。 相同适用于同一框架的不同版本。

7、可以轻松更改架构,而无需触及旧架构

有时我们必须扩展旧的体系结构,但是我们可能没有开发人员来实现或扩展该体系结构。 借助微型前端方法,我们可以开发具有最新堆栈的新功能并独立交付。 如果要扩展已有20年的现有应用程序,很难找到开发人员,因为您必须使用新技术来实现整个应用程序,或者可以借助微前端方法进行扩展。

延伸阅读1:微前端特性

  • 技术栈无关:主框架不限制接入应用的技术栈,子应用可自主选择技术栈
  • 独立开发/部署:各个团队之间仓库独立,单独部署,互不依赖
  • 增量升级:当一个应用庞大之后,技术升级或重构相当麻烦,而微应用具备渐进式升级的特性
  • 独立运行时:微应用之间运行时互不依赖,有独立的状态管理
  • 提升效率:应用越庞大,越难以维护,协作效率越低下。微应用可以很好拆分,提升效率