< >头 构建微前端框架| Toptal®-欧博体育app下载作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
鲍勃·迈尔斯
Ellie Mae, Inc .高级工程师.

鲍勃·迈尔斯是一名前端架构师,曾为从教育、出版到金融等领域的大型项目提供咨询.

分享

微前端架构是一种设计方法 前端 应用程序被分解成独立的、半独立的“微应用程序”,松散地协同工作. 微前端概念隐约受到微服务的启发,并以微服务命名.

微前端模式的好处包括:

  1. 微前端架构可能更简单,因此更容易推理和管理.
  2. 独立开发团队可以更容易地在前端应用程序上进行协作.
  3. 它们可以通过让“新”应用与“旧”应用并行运行来提供从“旧”应用迁移的方法.

尽管最近微锋面得到了很多关注, 到目前为止,还没有单一的主导实现,也没有明确的“最佳”微前端框架. 事实上,根据目标和要求,有多种方法. 请参阅参考书目,了解一些比较知名的实现.

在本文中,我们将跳过许多关于微锋面的理论. 这是我们 不会 封面:

  • 将一个应用程序“分割”成多个微应用程序
  • 部署问题,包括微前端如何适应CI/CD模型
  • 测试
  • 微应用是否应该在后端与微服务一对一对齐
  • 对微前端概念的批评
  • 微前端和普通旧式组件架构之间的区别

而不是, 我们将介绍一个专注于具体实现的微前端教程, 强调微前端架构中的重要问题及其可能的解决方案.

我们的实现叫做Yumcha. “yum cha”在广东话中的字面意思是“喝茶”,,但它的日常含义是“出去吃点心”.“这里的想法是,单个微应用程序 macroapp (我们将这样称呼他), 顶层应用程序)类似于点心午餐中拿出的各种小篮子.

如上所述的一个示例微前端应用的概述说明.

我们有时会将Yumcha称为“微前端框架”.在当今世界,“框架”这个词通常指的是Angular、React、Vue.Js,或者其他类似的web应用的上层结构. 我们不是在说 这是一个框架 在所有. 我们称Yumcha为框架只是为了方便:它实际上更多的是一组工具和几个薄层,用于构建基于前端的微应用程序.

微前端教程第一步:复合应用的标记

让我们深入思考一下如何定义一个macroapp和组成它的微应用. 标记一直是web的核心. 因此,我们的macroapp将通过以下简单的标记来指定:


  
    
  
  
    

Hello, micro-frontend app.

使用标记定义我们的macroapp让我们可以充分利用HTML和CSS的强大功能来布局和管理我们的微应用程序. 例如, 一个微应用程序可以位于另一个微应用程序之上, 或者在它的一边, 或者在书页的角落里, 或者在手风琴的一个窗格里, 或者躲起来,直到有事发生, 或者永远呆在后台.

我们已经为微应用程序命名了自定义元素 因为“门户”是微应用的一个很有前途的术语 门户网站的建议,这是定义用于微前端的标准HTML元素的早期尝试.

实现 自定义元素

我们应该如何实现 ? 因为它是一个自定义元素,作为一个web组件,当然! We can choose from among a number of strong contenders for writing 和 compiling micro-frontend web components; here we will use LitElement,聚合物项目的最新版本. LitElement支持基于typescript的语法糖, 哪个为我们处理大部分自定义元素样板. 为了使 可用到我们的页面,我们必须包括相关的代码作为

\n \n \n

Hello, micro-frontend app.

\n\n \n \n \n\n \n\n
\n\n

使用标记定义我们的macroapp让我们可以充分利用HTML和CSS的强大功能来布局和管理我们的微应用程序. 例如, 一个微应用程序可以位于另一个微应用程序之上, 或者在它的一边, 或者在书页的角落里, 或者在手风琴的一个窗格里, 或者躲起来,直到有事发生, 或者永远呆在后台.

\n\n

我们已经为微应用程序命名了自定义元素 因为“门户”是微应用的一个很有前途的术语 门户网站的建议,这是定义用于微前端的标准HTML元素的早期尝试.

\n\n

实现 自定义元素

\n\n

我们应该如何实现 ? 因为它是一个自定义元素,作为一个web组件,当然! We can choose from among a number of strong contenders for writing 和 compiling micro-frontend web components; here we will use LitElement,聚合物项目的最新版本. LitElement支持基于typescript的语法糖, 哪个为我们处理大部分自定义元素样板. 为了使 可用到我们的页面,我们必须包括相关的代码作为