你必须知道的11个微前端框架.

2024-01-21 16:18

本文主要是介绍你必须知道的11个微前端框架.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微前端将前端整体分解为许多更小、更易管理的片段。每个团队可以端到端地拥有自己的功能,可以在自己的代码库中工作,可以独立发布版本,可以不断进行小的增量升级,还可以通过 API 与其他团队集成,以便他们可以一起组建和管理页面和应用程序。
将单体后端分解成为微服务之后,后端开发流程已在效率和规模上取得了显著进步。然而,当今大多数前端应用程序架构仍然是单体式的,使得前端开发流程很难加速和扩展。
微前端的想法是将前端单体分解为许多更小、更易管理的片段。每个团队可以端到端地拥有自己的功能,可以在自己的代码库中工作,可以独立发布版本,可以不断进行小的增量升级,还可以通过 API 与其他团队集成,以便他们可以一起组建和管理页面及应用程序。
微前端有很多方法,从智能的构建时组件集成,到使用自定义路由的运行时集成等等。在本文的列表中,作者收集了最杰出的微前端构建工具。欢迎读者在评论中添加反馈或建议!

  1. Bit
    Bit 容许你从独立的组件组建和管理前端。它可能是清单上最受欢迎的、可用于生产(production-ready)的解决方案。
    如果查看 bit.dev 主页,你会发现它由很多独立的组件构成。这些组件由不同团队,在不同代码库中构建,并最终集成在一起,创造了一个紧密结合的产品。
    Bit CLI 是广泛流行的工具,用于组件驱动开发。使用 Bit,你可以将独立的组件构建、集成和组合到一起。
    尽管人们通常将微前端视为在运行时发生的组合,但 Bit 可以让开发人员在构建时高效地组合前端,以享受两全其美的优势:“传统单体式前端”的安全性和健壮性,以及微前端的 简单性 和 可伸缩性。
    使用 Bit,在与其他团队合作同时,不同的团队可以独立构建、发布和公开其组件,这样就可以将 Web 开发过程转变为功能和组件的模块化组合。
    除了 用于组件驱动开发的 OSS 工具 外,Bit 还为团队提供了一个 云平台,该云平台使得团队可以构建变更并在组件上进行协作,可以高效地管理和扩展开发过程,同时保持所有团队完全独立,团队可自主交付。
    为了确保每个前端都有自己独立且快速的构建流程,Bit 还提供了独特的 CI/CD 流程,该流程为 100% 组件驱动,这意味着不同的团队可以安全地集成更改,而不必等待,争夺主控权或打破任何东西。开发人员可以在所有受影响的应用程序中持续和安全地将更改传播到组件。
    作为结果,通过 简单的解耦代码库、自治团队、小型定义良好的 API、独立的发布管道 和 持续增量升级,增强了工作流程。可以查看如下示例。
    如果你的团队使用组件来开发软件,并且正在寻找一种可以在大型应用程序上解锁微前端和模块化工作的解决方案,请务必查看 Bit 的 OSS 工具和平台,这可能正是你所需要的。
  2. Webpack 5和Module Federation
    多个单独的构建最后要形成一个应用程序。这些单独的构建不应相互依赖,因此可以单独开发和部署。
    Module Federation 是 Zack Jackson 发明的 JavaScript 架构,Zack Jackson 随后提出为其创建一个 Webpack 插件。Webpack 团队提供帮助将该插件引入了 Webpack 5,目前处于 beta 测试阶段。
    简而言之,Module Federation 允许 JavaScript 应用程序在运行时从另一个应用程序动态导入代码。模块将构建唯一的 JavaScript 入口文件,其他应用程序可以通过设置 Webpack 配置项来下载该入口文件。
    它还通过启用依赖关系共享来解决代码依赖关系和包大小增加的问题。例如,如果你要下载一个 React 组件,那么你的应用程序不会两次导入 React 代码。模块将自动使用你已有的 React 源,仅额外导入组件代码。最后,你可以使用 React.lazy 和 React.suspense 提供后备功能,以确保当导入的代码由于某种原因失败后,不会因构建失败而影响用户体验。
    这个架构释放了构建微前端的巨大潜力。你可以在如下文章中信息和查看示例。
  3. Single SPA
    Single SPA 将自己定义为一种“前端微服务 Javascript 框架”。简言之,它将生命周期应用于每个应用程序。每个应用程序都可以响应 url 路由事件,并且知道如何从 DOM 引导,加载和卸载自身。传统 SPA 和 Single SPA 应用程序之间的主要区别在于它们能够与其他应用程序共存,并且它们各自没有自己的 HTML 页面。
    因此,如果你希望将不同的前端或框架整合到一个 DOM 中,并希望在运行时进行集成,请查看这个有趣的实验。
  4. SystemJS
    SystemJS 不是微前端框架,但它确实为跨浏览器的独立模块管理提供了解决方案。这种解决方案是实现 MF 的关键(并且实际上也被 Singe-spa 使用)。
    可以将 SystemJS 视为 JS 模块的协调器。它使我们无需依赖本机浏览器支持,即可使用与 JS 模块相关的不同功能,诸如动态导入和导入映射等,并且所有这些都具有接近站长交易本机的性能。一些值得注意的功能包括用于较旧浏览器的 Polyfill,使用名称的模块导入(通过将名称映射到路径)以及对多个 JS 模块的单个网络请求(通过使用其 API 将多个模块设置为单个文件)。
    它还提供便捷的方式访问其“模块注册表”,以便你随时了解浏览器中哪些模块是可用的。
  5. Piral
    Piral 的目标是让你可以使用微前端轻松构建门户应用程序。你可以使用 Piral 创建模块化前端应用程序,并利用微前端体系结构在运行时使用称为 pilets 的解耦模块进行扩展。用户可以独立开发一个 pilet,并附带必要的代码以及所有其他相关资产。这是一个现场演示:Piral 所要求的前提条件相当宽松,开发人员仅需要安装喜欢的编辑器、终端、网络浏览器和 Node.js 即可。开发者可以在本地开发机的仿真器中执行和调试 Piral instance(应用程序外壳)和 piltes(功能模块)。
  6. OpenComponent
    Open Component(简称 OC)项目宣布其目标是“前端世界中的无服务器”。更具体地说,OC 旨在成为一个一站式微前端框架,从而使其成为一个丰富而复杂的系统,其中包括从组件处理到注册表、再到模板、甚至包括 CLI 工具。OpenComponents 有两个部分:
    • components 是同构代码的小单元,主要由 html、javascript、css 组成。它们可以选择包含一些逻辑,从而允许服务端的 node.js 应用去组建用于呈现视图的模型。在渲染之后,它们就是纯 html 片段,可以插入到任何 html 页面中。
    • consumers 是网站或微型网站(所有小型可独立部署的网站,这些网站均通过前门服务或路由机制连接)。这些网站需要在其网页中呈现部分内容的组件。请查看这里以了解更多信息:
  7. Qiankun
    Qiankun 声称自己是“一个 微前端 实现,基于 single-spa,但已使 single-spa 可用于生产(production-ready)”。该项目旨在解决由较小的子应用程序组成较大的应用程序时所面临的一些主要问题,例如发布静态资源、集成单个子应用程序、确保子应用程序在开发和部署过程中彼此独立且运行时相互隔离、处理公共依赖性和处理性能问题等。
  8. Liugi
    Luigi 是一个微前端 JavaScript 框架,你可以使用它创建由本地和分布式视图驱动的管理用户界面。Luigi 允许 Web 应用程序与应用程序包含的微前端进行通信。为了确保通信顺利进行,你可以配置路由、导航、授权和 UX 元素等设置。
    Luigi 由 Luigi Core 应用程序和 Luigi 客户端库组成。他们使用 postMessage API 在核心应用程序和微前端之间建立安全的通信。想获取更多信息,请自行前往查看。
    这是一个 测试乐园 (Test Playground),你可以在这里亲身体验它的工作
    尝试一下,也可在 GitHub 上查看这个不错的 SAP 项目:
  9. FrintJS
    FrintJS 是“用于构建可伸缩和响应式应用程序的模块化 JavaScript 框架”。你可以使用它加载来自不同 bundlers 的应用程序,为应用程序提供结构,并处理诸如路由、依赖关系等问题。该项目可通过附加的软件包支持 RN 和 Vue,但文档和测试大多数是针对 React 的。
    可以访问如下的 GitHub 项目了解更多信息。
  10. Mosaic
    Mosaic 是一组服务,库以及规范定义了其组件之间如何彼此交互,用来支持大型网站的微服务式架构。Mosaic 使用了片段(Fragments)的机制,这些片段由单独的服务程序提供服务,并根据模板定义在运行时组合在一起。
    它由一堆软件包组成,这些软件包处理不同的问题,例如路由、布局、模板存储、甚至展示 UI。需要更多信息,请查看如下链接。
  11. PuzzleJS
    PuzzleJS 是“用于可扩展和快速建站的微前端框架”。你可以使用它创建相互对话的网关和店面项目。它的灵感来自 Facebook 的 BigPipe,朝着微前端的方向发展。
    PuzzleJs 提供诸如创建网关或店面(彼此独立)的功能,并提供配置文件将它们连接。你可以使用它在编译时将 html 模板编译为 javascript 函数。此操作完全独立于请求,因此 PuzzleJ 可以使用此功能发送第一个块。它也是 SEO 友好的,在服务端进行准备和渲染。而且,当片段所需的 api 出现故障时,PuzzleJs 可保证其他页面片段仍正常工作。这里是一个真实的 例子。

这篇关于你必须知道的11个微前端框架.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/630100

相关文章

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方

css中的 vertical-align与line-height作用详解

《css中的vertical-align与line-height作用详解》:本文主要介绍了CSS中的`vertical-align`和`line-height`属性,包括它们的作用、适用元素、属性值、常见使用场景、常见问题及解决方案,详细内容请阅读本文,希望能对你有所帮助... 目录vertical-ali

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处