官网地址

微前端通常被称为“前端微服务”。 它们允许您将大型单体前端分解为独立的、可扩展的、可以协同工作的独立部分。 微前端架构对于复杂的产品或拥有众多团队的公司尤其有用,可以帮助您创建一致的 Web 应用程序。

观看此视频,其中解释了微前端架构的基础知识以及如何使用 Luigi 实现。

Luigi 是一个用 Svelte 编写的开源微前端框架。 它允许您创建一致的用户界面和导航,同时还提供其他功能以使开发更容易。 它的外观基于基本库样式。 Luigi 与技术无关,允许您使用 React、Angular、UI5 或任何其他技术构建应用程序并向其添加微前端。

Luigi Fiddle 是一个测试游乐场,您可以在其中感受 Luigi。

这张图描绘了 Luigi 的基本架构:

Luigi terminology

这是一小部分 Luigi 术语:

  • Luigi Core - 指其中显示微前端的主要应用程序。 它包括顶部和侧面导航以及与主应用程序相关的所有其他设置。
  • Luigi Client - 这个术语涵盖了 Luigi 提供的所有与微前端相关的设置。 微前端可通过 Luigi Client API 进行配置。
  • parameters - 参数是用于配置 Luigi 应用程序的元素。
  • 导航节点 - Luigi 中侧面导航的各个链接。
  • Contexts - 上下文是 Luigi 参数,允许您将对象传递到微前端。
  • Views - 视图,微前端的另一个名称。

本系列文章,我们将从头开始使用 Luigi 创建一个应用程序。它将基于网络购物平台的理念,并将包括其他功能,例如用于以英语和德语显示网站的本地化。

该应用程序由三个主要部分组成:

  • 使用 React 构建的 Luigi Core 应用程序:“主应用程序”,其中包含微前端并包括无论您导航到应用程序的哪个子页面都保持一致的顶部和侧面导航。
  • 使用 React 构建的微前端:它们包括主页、“产品”页面和包含每个产品信息的“产品详细信息”列表。
  • 使用 UI5 构建的微前端:“订单历史”页面,显示已购买产品的数量和价格。

最后,您完成的应用程序的主页应如下所示:

完整源代码

命令行 npm i create-react-app:

然后是命令行:npx create-react-app react-core-mf

Install dependencies

If you haven’t already done so, make sure you install SAP Fonts.

跳转到 core app 去:cd react-core-mf

安装依赖:


npm i -P @luigi-project/core @luigi-project/client fundamental-styles fundamental-react @sap-theming/theming-base-content react-router-dom



npm i copy-webpack-plugin webpack webpack-cli @babel/core @babel/preset-env babel-loader --save-dev


Create UI5 micro-frontend

创建一个 ui5-mf 文件夹:

命令行创建 ui5 工程:


npm install -g yo generator-easy-ui5


Add a file with product data

在此步骤中,您将创建一个文件,其中包含有关您的购物应用中在售产品的信息。

在现实的项目实现中,这些数据将由数据库提供。但为简单起见,您将在 .json 文件中创建虚拟数据。该文件将由主应用程序和微前端使用。

Navigate to ui5-mf/uimodule/webapp/model and create a products.json file with the following content:

Prepare React app

此步骤为您的开发做好准备。 为了能够使用 webpack 并完全控制您的 React 应用程序,您需要触发 npm run eject 命令。


cd react-core-mf


执行下列命令行。 请注意,由于此命令的工作方式,npm run eject 可能会失败。如果出现错误,则需要在运行命令之前提交任何更改。


npm run eject


如果遇到下面的错误消息:

解决方案:

  • git add .
  • git commit -am “Save before ejecting”

之后重新执行 eject 命令,就成功了:

Add Luigi to index.html

In this step, you will let Luigi take control of the index.hmtl file - the entry point for your app.

编辑 react-core-mf/public/index.html 文件的内容为:

Create micro-frontends template

在这一步中,您将创建另一个 HTML 文件,该文件将作为 React 创建 React 微前端的模板。

转到 react-core-mf/public 并创建一个名为 app.html 的新文件。 将此代码粘贴到文件中:

Configure webpack

在这一步中,我们配置 webpack 并调整依赖项,以便更轻松地开发和构建应用程序。

修改 react-core-mf/config/webpack-config.js:

加上一行:

删除这一行:

以及:

新的 plugin:

Create Luigi configuration file

在这一步中,您将创建一个 Luigi 配置文件。 这是任何 Luigi 应用程序的中心点。 它允许您配置一致的导航和许多其他 Luigi 功能。

react-core-mf/public 目录下面新建一个配置文件:luigi-config.js.

在现实生活中,您可以为配置文件指定任何您想要的名称或创建多个文件。 唯一重要的是使用正确的 Luigi 参数和语法,这将在下一步中介绍。

Configure Luigi for “Home” node

借助与导航和常规设置有关的简单参数,您将创建您的第一个“主页”导航节点并使您的应用程序具有响应性。

这些是您将使用的 Luigi 导航参数:

  • pathSegment - 添加到 URL 的文本段
  • label - 导航中显示的节点的名称
  • icon - 标签旁边显示的 SAP 图标
  • viewUrl - 微前端的 URL

使用下面的代码,您将为您的页面配置标题,并使您的应用程序在移动设备上使用 responseNavigation 参数看起来更好:

Create “Home” view

在这一步中,您将使用 React 创建您的第一个微前端(又名视图)。 这是一个带有欢迎信息的简单“主页”视图。

导航到 react-core-mf/src 并创建一个名为 views 的文件夹。

新建一个 Home.jsx 文件:

Configure router for “Home” view

在此步骤中,您将对 React 应用程序的入口点 index.js 进行更改。您将为上一步中创建的“主页”视图配置路由器,并导入 Luigi Client。

打开 react-core-mf/src/index.js 并将其内容更改为:

Create more views with React

在这一步中,您将创建更多 React 微前端,包括产品列表和产品详细信息。

导航到 react-core-mf/src/views 并创建一个包含以下内容的文件 List.jsx:

Products.jsx:

Add “Products” view to Luigi app

在这一步中,您将在 Luigi 中为“产品”微前端添加一个导航节点。

编辑 react-core-mf/public/luigi-config.js:

在导航中添加一个新的“产品”节点:

Step 12: Add “Product Detail” view to Luigi app

在此步骤中,您将向应用程序添加 ProductDetail.jsx 视图。 您将能够通过 Luigi 动态参数显示每个产品的详细信息,在本例中名为 :id。

文件 luigi-config.js 的内容为:

Step 13: Use Luigi link manager for routing

在这一步中,我们将使用 Luigi 来提供微前端的路由,而不是使用 React。 Luigi Client 的 linkManager 功能是导航到每个产品的 id 页面的最简单方法。

更多Jerry的原创文章,尽在:“汪子熙”: