微前端的5种用法

59 阅读2分钟

什么是微前端:

简而言之,微前端是将微服务原则应用于前端应用程序的一种方式,这将带来多个好处,如自主团队、易于维护、独立部署和灵活的技术选择。

微前端架构最适合大型应用程序和大型团队协作的场景,旨在通过分工来提高效率,否则采用微前端架构可能会导致过度复杂。

1. iFrames 老生常谈的iframe标签,可以在页面的任何地方使用,需要确保要包含为iframe的页面启用此头部 X-Frame-Options: ALLOW-FROM example.com

可以通过两种方式将数据从父页面传递到iframe:

2. Javascript打包 在运行时将任何用任何框架编写的JavaScript文件包含到页面中,并确保该文件将在您在原始应用中的特定位置创建的div中渲染。 您可以以相同的方式包含CSS文件,或包含一个manifest.json文件,该文件引用您所有的JS和CSS文件(如果有多个JavaScript和CSS文件),并会自动加载所有所需文件。

3. Zones Next.js中的一个特性,让您可以使用重定向将另一个项目引用为主应用中的页面。如果您不使用Next.js,也可以通过Nginx实现这一点。 由于主应用和所有区域都在同一域上,它们将共享cookie,因此您可以在主应用上进行身份验证,其他应用可以读取身份验证cookie。

4. 模块联邦 Webpack 5中的一项新特性,允许您导出组件并在另一个应用中使用,像使用应用中的其他组件一样导入它,对联邦组件的任何更新将在运行时反映给所有消费者。

5. 其他专用框架 有一些框架专门用于构建微前端,如 bit.dev/ single-spa.js.org/

演示

我创建了一个小型演示,使用了Zones和模块联邦。 在这个演示中,有两个区域:主页和产品,我将顶部菜单栏作为联邦模块从主页应用导出,并在主页和产品中使用。 同时使用next-auth库创建了简单的身份验证,并且在两个区域之间共享。

演示链接 mfe-shop-home.vercel.app/ mfe-shop-products.vercel.app/products

代码 github.com/adelhamad/m…

进一步阅读 www.facebook.com/notes/10158… dev.to/luistak/cro… micro-frontends.org martinfowler.com/articles/mi… indepth.dev/posts/1477/…