在我之前的文章(本文末尾的链接)中,我亲身体验了微前端以及如何创建它们。在本文中,我将回过头来解释什么是微前端,为什么我们需要使用它们以及实现它们的不同方式。这请帮助我为我的公司提供建议,我希望这对读者为您的项目选择合适的架构有所帮助。什么是微前端?MartinFowler将微前端架构定义为“一种由可独立交付的前端应用程序组成的架构风格”。简单地说,微前端是网页的一部分(而不是整个页面)。在微前端架构中,有一个托管一个或多个微前端的“主机”或“容器”页面。宿主/容器页面也可以共享一些它们自己的微前端组件。例如,正如我们在上一篇文章中实现的那样,我们将按钮组件从MFE1页面公开到MFE2(主机/容器)或http://mfe1.s3-website-us-east-a.amazonaws.com/Deploying到本文中的S3微前端架构由3个主要组件组成:微前端(在前面的例子中,MFE1的按钮是微前端)Host/Container(在前面的例子中,MFE2是宿主)MicroFramework:我们使用了WebPack5模块联合插件为什么选择微前端?微前端架构的引入是为了解决当前SPA前端开发的诸多问题。我经历过一个站点发展到很难扩展、修改甚至培训新工程师参与其中的程度。使用这个整体系统,开发人员被锁定在彼此之外以应用小的更改。以下是微前端的一些好处:团队可扩展性:多个团队可以独立工作,为多个系统做出贡献。这使我们能够划分工作并将其扩展到多个团队。单一职责:这将允许每个团队构建具有单一职责的组件。托管团队可以专注于分析、性能,而每个职能团队可以专注于客户。两个团队都可以在他们的特定领域获得100%。页面团队可以100%专注于创建大型页面。每个微前端团队将100%专注于微前端的功能。可重用性:我们将能够在多个地方使用代码。一个组件将被构建和部署,它可以被不同的团队重用。技术无关:微前端架构是技术独立的。您可以使用来自不同技术(JavaScript、React、Vue、Angular……)的组件。您不必担心部署或构建它们。学习曲线:对于加入团队的新工程师来说,学习较小的应用程序比理解具有数千行代码的单体应用程序更容易。如何实现微前端?微前端的主要思想是宿主/容器和微前端之间的集成。可以通过三种方式来集成微前端构建时集成,这是当今实现的大部分代码。容器会将组件安装为库,类似于您从NPM安装的组件。这种方法的问题是同步不同版本的库和构建问题。此外,很难使用不同的技术。此外,最终包的大小会很大,因为它包含所有依赖项。此外,您必须再次部署对依赖项的任何更改。此外,容器和所有微前端之间存在紧密耦合。RuntimeIntegration这就是我在之前的文章中所解释的。在这种情况下,容器是单独构建和部署的。每个微前端都可以作为单独的包使用,即容器/主机可以获取它需要的微前端。有关此方法的更多说明,请参阅本文末尾的文章列表。在这种情况下,容器和微前端是完全耦合的。他们不共享构建或部署,并且可以使用不同的技术。容器可以决定部署哪个版本的微前端。服务器端集成在这种情况下,所有功能都将在后端确定加载哪个微前端。服务器将决定将请求路由到的URL。这是一个标准的服务器端组合。
