你应该知道的11个微前端框架(微前端singlespa)
ccwgpt 2024-09-20 13:13 40 浏览 0 评论
当你将长期存在的后端整体,细分为各种微服务时,就可以在后端的开发过程中获得更加有效也更具规模的新事物。然而,大多数前端应用程序如今仍然独立存在很难变得更加高效,与此同时,对于前端发展进程的规模化也具有同样的意义。
微前端就是要将前端整体细分为更小、更容易进行管控的片段。每个部分都可以端到端地拥有自己的功能,可以在自身的代码库中工作、独立发布版本、可以不断地进行小的增量升级,并且还可以通过API与其他部分进行集成,以便共同对页面和应用程序进行创作和管理。
有许多方法可以构建微前端,从组件的智能构建时集成,到使用自定义路由的运行时集成。在这篇文章中,我收集了许多杰出的工具,来帮助我们构建微前端。欢迎您在评论区发表建议提供或反馈!
1
Bit
Bit允许你从独立的组件进行构建并管理前端,它可能是最受欢迎的,并且可以立即投入生产的解决方案。
如果你查看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架构,并在后来提出为其创建Webpack插件。Webpack团队帮助它将该插件引入了Webpack 5,目前处于测试阶段。
简而言之,Module Federation允许JavaScript应用程序在运行时从另一个应用程序动态导入代码。该模块将建立唯一的JavaScript条目文件,能够通过设置webpack配置,使其他应用程序可以下载该文件。
它还通过启用依赖关系共享,来解决代码依赖关系和增加包大小的问题。例如,如果你要下载React组件,那么你的应用程序就不会两次导入React代码。该模块将巧妙地使用你已经拥有的React源,仅导入组件代码。最后,如果导入的代码由于某种原因失败,则可以使用React.lazy和React.suspense提供备用功能,以确保用户体验不会因构建失败而中断。
这个架构释放了构建微前端真正巨大的潜力。
3
Single SPA
Single SPA 将自己定义为:微前端的JavaScript框架。简而言之,它将生命周期运用到了每一个应用程序。每个应用程序都可以响应url路由事件,并且必须知道如何从DOM引导,安装和卸载自身。传统SPA和Single SPA应用程序之间的主要区别在于它们必须能够与其他应用程序共存,并且它们各自没有自己的HTML页面。
4
Systemjs
Systemjs并不是微前端的框架,但是它提供了独立模块跨浏览器管理的解决方案。这种方案正是实施MF的关键(实际上也被用于Single SPA)。
Systemjs被看做JS模块的协调器,它能够让我们运用不同的JS模块连接的特点,例如动态导入、导入映射等等,而不是依赖于本地的浏览器支持——在以上方面,Systemjs都具有接近本地的性能。
一些值得注意的功能包括适用于老版本浏览器的Polyfill,使用名称的模块导入(通过将名称映射到路径),和对多个JS模块单个的网络请求(通过使用它的API,将多个模块设置为单个文件)。
Systemjs还可轻松访问“模块注册表”,能够让你随时了解到浏览器中的可用模块。
5
Piral
Piral的目标是让你轻松通过微前端建立一个门户应用,它能够确保你能够创建一个模块化的应用程序,并且利用微前端体系结构,在运行时使用被称为“pilets”的解耦模块进行扩展。“pilet”能够独立开发,并附带着必要的代码和其他相关资源。
这种前提条件非常不错,开发人员只需要安装使用你最喜欢的编辑器,终端,网络浏览器和Node.js即可。你可以在本地开发计算机上的仿真器中,执行和调试Piral instance(应用程序外壳)和pilet(功能模块)。
6
Open Components
Open Components宣布他们的目标是“让前端世界中无服务器”。更具体地说就是,Open Components的目标是成为一个一站式微前端框架,从而使其成为一个丰富而复杂的系统,其中包括从组件处理、注册表,到模板,甚至包括CLI工具在内的各种工具。
Open Components有两个部分:
第一,components是同构代码的小单元,主要由html,css,js组成。它们可以选择包含一些逻辑,从而允许服务器端的node.js应用程序组成一个用于呈现视图的模型。经过渲染后,它们是纯HTML片段,可以插入到任何html页面中。
第二,consumers是网站或微型网站(小型的可独立部署的小型网站,都通过前门服务或任何路由机制连接),它们需要将components用于在其网页中,以此呈现部分内容。
7
Qiankun
Qiankun宣称他们是“一个基于single-spa的微前端实现,但它已经可以投入生产了”,它的目标是解决一些,从小型子应用程序构建大型应用程序过程中,可能会面临的一些主要问题,比如发布静态资源,整合单个的子应用程序,确保子应用程序在开发和部署过程中彼此独立,运行时相互隔离,从而处理公共依赖性,处理各种性能问题等。
8
Luigi
Luigi是一个微前端JavaScript框架,可以让你创建由本地和分布式视图驱动的管理用户界面。Luigi允许Web应用程序与应用程序包含的微型前端进行交流与通信。为确保通信的交流顺利进行,你可以对路由,导航,授权和UX元素等进行配置。
Luigi由Luigi Core应用程序和Luigi 客户端库组成。他们使用postMessage API在核心应用程序和微前端之间建立安全的通信。
9
FrintJS
FrintJS是一个“用于构建可伸缩和响应式应用程序的模块化JavaScript框架”。你可以用它加载来自不同bundlers的应用程序,为应用程序提供结构,并处理诸如路由,依赖关系以及其他问题。FrintJS还可以通过其他程序包支持RN和Vue,但主要是对React进行记录和测试。
10
Mosaic 9
Mosaic 9是一组服务、库,以及一个定义了它组成部分之间如何进行交互的规范,以支持大型网站的微服务样式架构,由一些处理不同需求,比如路由、布局、模板存储、甚至展示UI的软件包组成。Mosaic运用的这些片段提供独立的服务,并且根据模板定义,在运行时将他们组合在一起。
11
PuzzleJS
PuzzleJS是一个“用于可扩展和快速网站微前端框架”,允许你创建和一个相互对话的网关和店面项目。它的灵感来自Facebook的BigPipe,并且朝着微前端的方向发展。
PuzzleJS可以提供的功能包括创建一个网关,或者店面(彼此独立),同时也可以通过提供一个组态文件把它们连接起来。它使你可以在编译时将html模板编译为javascript函数。由于这种操作完全与请求相独立,因此PuzzleJ可以通过这种功能发送第一个组块。
它也是SEO友好的,已在服务器端进行了准备和渲染。而且,当片段所需的API出现故障时,PuzzleJs也保证其他页面片段仍然可以正常工作。
相关推荐
- 十分钟让你学会LNMP架构负载均衡(impala负载均衡)
-
业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...
- AGV仓储机器人调度系统架构(agv物流机器人)
-
系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...
- 远程热部署在美团的落地实践(远程热点是什么意思)
-
Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...
- springboot搭建xxl-job(分布式任务调度系统)
-
一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...
- 大模型:使用vLLM和Ray分布式部署推理应用
-
一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...
- 国产开源之光【分布式工作流调度系统】:DolphinScheduler
-
DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...
- 简单可靠高效的分布式任务队列系统
-
#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...
- 虚拟服务器之间如何分布式运行?(虚拟服务器部署)
-
在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...
- 一文掌握 XXL-Job 的 6 大核心组件
-
XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...
- 京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?
-
京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...
- 企业级项目组件选型(一)分布式任务调度平台
-
官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...
- python多进程的分布式任务调度应用场景及示例
-
多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...
- SpringBoot整合ElasticJob实现分布式任务调度
-
介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...
- 分布式可视化 DAG 任务调度系统 Taier 的整体流程分析
-
Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...
- SpringBoot任务调度:@Scheduled与TaskExecutor全面解析
-
一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)