您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

微前端架构初探以及我的前端技术盘点

时间:2023-11-20 14:34:10  来源:微信公众号  作者:趣谈前端

前言

最近几年微前端一直是前端界的热门议题, 它类似于微服务架构, 主要面向于浏览器端,能将一个复杂而庞大的单体应用拆分为多个功能模块清晰且独立的子应用,且共同服于务同一个主应用。各个子应用可以独立运行、独立开发和独立部署。

微前端架构概念的诞生及应用对于提供复杂应用服务的企业来说显然是一种机遇, 同样也是一种挑战.本文主要就微前端架构的概念和实现方案做一个总结和复盘,并且通过一个实际案例来实践微前端架构,希望能对同样有此需求的朋友们提供一些帮助和思路。

你将收获

  • 什么是微服务以及微服务能给企业带来什么。
  • 微前端架构概念及方案。
  • umi下的微前端架构方案实战。
  • 一个程序员的技术复盘与展望。

正文

在总结微前端架构之前,让我们来先看看微服务是什么。

1、什么是微服务以及微服务能给企业带来什么

微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。

传统的web软件开发架构往往如下图所示:

微前端架构初探以及我的前端技术盘点

虽然我们在传统应用中可以采用模块化来拆分业务逻辑和开发方式,但最终它们会打包并部署为单体式应用。这种架构往往更适合中小型项目, 开发简单直接,更适合集中化管理应用.但往往也会存在很多缺点,比如可扩展性不足,相同或者相似业务复用困难,部署时间长, 业务复杂之后很难维护等问题。

对于复杂系统和业务来说,我们一般会采用微服务架构。其思路是将一个完整的应用分解为小的、互相连接的微服务,每个服务完成特定的功能, 并且某些特定的服务还能为其他服务提供API接口。

微前端架构初探以及我的前端技术盘点

由上图可以发现微服务给我们带来的好处:

  • 将一个庞大的单体拆解成多个子服务,大大降低了开发复杂度。
  • 任务边界划分明确, 每个子服务之间单独开发, 不同服务之间可并行由不同的开发人员开发,提高开发效率。
  • 更细粒度的加强了模块化进程, 可维护性和可读性更高。
  • 团队之间只要制定好API约定, 那么不同成员或者团队可以采用不同的技术开发服务。
  • 可用共享服务, 使得不同子服务可组合实现更复杂的功能。
  • 每个微服务可独立部署发布,使得自动化CI(持续集成)/CD(持续交付)成为可能。

但微服务并不是任何场景下都是合适的, 微服务的目标是充分分解应用程序,以促进敏捷开发和持续集成部署。在部署微服务时我们需要做好适当的边界划分,并处理不同微服务之间的并发问题,这些都是对整个项目带来的挑战,需要更加专业的技术成员来把控.目前市面上也有很多开源的微服务框架比如DubboSpring Cloud等,笔者之前公司采用的Spring Cloud就是一个很好的微服务架构方案。

2、微前端架构概念及方案

(1)理解微前端架构

上面简单介绍了一下微服务架构,接下来我们进入主题,来聊聊微前端微前端微服务实现的目的类似,都是将应用由单一的单体应用转变为多个小型子应用,差别就在于:

  • 微前端应用于浏览器端,主要是对web应用进行拆解,最后将不同子系统(模块)聚合成一个完整的应用。
  • 微前端主要目的是聚合,即将不同子系统聚合成一个大系统,而微服务架构目前更多是解耦,即解耦不同服务间的依赖。

我们先来看看微前端的一些思考者.

微前端架构初探以及我的前端技术盘点

Michael Geers 大佬发表了一些对微前端的一些思考,内容大致总结一下就是:

“ 微前端 ”是将微服务的概念扩展到前端领域。为了构建一个功能强大的浏览器应用程序(也称为单页应用程序),当前普遍的趋势是将其建立在微服务架构之上。但是随着时间的流逝,通常由独立团队开发的前端层会不断增长,并且变得更加难以维护。Micro Frontends背后的想法是将Web应用程序视为由独立团队拥有的功能的组合。每个团队都有自己关心和专长的不同业务或任务领域。每个团队可以跨职能,并且从数据库到用户界面,端到端地开发其功能。

正如下面的例子所示:

微前端架构初探以及我的前端技术盘点

当我们的系统中有多个不同的子模块,并且子模块之间有相对独立且完整的功能体系时, 一旦子模块变得越来越多, 那么整个应用将变得非常庞大且臃肿,开发和维护成本大大提高.如果在这种场景下我们采用SPA模式开发,那么项目后期将变得不可想象,页面首次加载将变得非常慢(笔者曾经就经历过,开发一个复杂系统页面首次加载花了20多秒,所以不得不采用MPA来处理); 但是我们采用MPA(多页应用)模式,虽然解决了应用臃肿的问题, 但仍然存在很多有待处理问题,比如模块切换需要重新刷新页面, 公共组件无法共享,子模块直接,父子模块之间的通信问题,开发部署繁琐等.这写都是传统开发模式会遇到的问题。

试想一下,如果面对以上问题, 如果有一种架构模式, 可以让我们在主应用中共享公共组件和状态(但是要保证子应用运行时内部的状态隔离), 并且不同子模块之间可以单独开发部署, 模块间切换不刷新页面, 并且模块之间,父子应用之间可以通过某种简单的方式实现通信,这样是不是就完美了?不错, 这也许就是微前端要解决的问题。

微前端架构初探以及我的前端技术盘点

往往企业的中后台系统更加适合使用微前端架构,因为B端大部分都是业务驱动,而往往这些业务之间会非常复杂, 比如Saas, Paas等系统.像类似于云平台,CRM,ERP系统往往是微前端架构的拯救对象。

笔者曾经接手的ERP系统,由于开发时间比较早,往往有很多遗留的历史包袱,比如新老技术栈的糅合, 前端业务代码庞大而毫无违和感,为了对其继续迭代开发, 重构是必经之路,微前端另一个重要的作用笔者认为就是解放.解放不可挽回的痛



Tags:前端架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
微前端架构初探以及我的前端技术盘点
前言最近几年微前端一直是前端界的热门议题, 它类似于微服务架构, 主要面向于浏览器端,能将一个复杂而庞大的单体应用拆分为多个功能模块清晰且独立的子应用,且共同服于务同...【详细内容】
2023-11-20  Tags: 前端架构  点击:(0)  评论:(0)  加入收藏
干净的前端架构,看完这篇让你能够构建更简洁的前端架构
干净的前端架构,围绕这个话题有很多原则:SOLID、KISS(保持简单明了)、DRY(不要重复自己)、DDD(领域驱动设计)等等。为什么需要前端架构?功能性和非功能性的要求不仅应该在后端应用,还...【详细内容】
2023-11-20  Tags: 前端架构  点击:(2)  评论:(0)  加入收藏
跟着架构师学习大型网站架构的技术细节:前端架构需要解决的问题
前端架构需要解决的问题前端网页就是这么简单,除去图片、视频等资源外只有三部分,即标记网页元素的HTML、设置元素样式的CSS和负责交互处理的JavaScript。在软件开发上,普遍认...【详细内容】
2022-10-24  Tags: 前端架构  点击:(152)  评论:(0)  加入收藏
前端架构之 React 领域驱动设计
领域驱动,各自只管各自的模块,顶层再来进行组装和分配...【详细内容】
2021-06-25  Tags: 前端架构  点击:(228)  评论:(0)  加入收藏
大前端架构思考与选择
问题 “一云多端”成为趋势,终端类型越来越多。比如,现在PC Web网站的产品已经有了,现在想扩展APP,小程序... ...怎么办?一个直接能想到的方法就是在原来的基础上,为APP等增加API...【详细内容】
2020-08-11  Tags: 前端架构  点击:(241)  评论:(0)  加入收藏
携程度假无线前端架构演进之路
这篇文章将简略地介绍我们当前的无线前端架构设计及其演进之路。主要内容包含以下几个部分,希望我们的经验能带给大家一些启发。1)当前的前端方案及其解决的问题2)现在面对的新...【详细内容】
2020-07-24  Tags: 前端架构  点击:(160)  评论:(0)  加入收藏
微前端架构技术解析
前言近来,微前端的概念非常火爆,那么什么是微前端架构?微前端架构是一种架构风格类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个...【详细内容】
2020-02-18  Tags: 前端架构  点击:(272)  评论:(0)  加入收藏
「前端架构」React,Angular和Vue:哪一个最好,为什么
这是帮助开发人员构建Web应用程序的三种最流行的工具。 请继续阅读,了解哪一个最适合您的需求。 在当今的发展世界中,技术正在快速增长并且变化迅速,许多开发工具似乎可以...【详细内容】
2019-09-23  Tags: 前端架构  点击:(621)  评论:(0)  加入收藏
大型项目前端架构浅谈
稿件来源:https://juejin.im/post/5cea1f705188250640005472目录: 1、综合 1.1、使用场景 1.2、核心思想 1.3、切入角度 1.4、其他 2、基础层设计 2.1、自建Gitlab 2.2、版本...【详细内容】
2019-08-20  Tags: 前端架构  点击:(609)  评论:(0)  加入收藏
▌简易百科推荐
微前端架构初探以及我的前端技术盘点
前言最近几年微前端一直是前端界的热门议题, 它类似于微服务架构, 主要面向于浏览器端,能将一个复杂而庞大的单体应用拆分为多个功能模块清晰且独立的子应用,且共同服于务同...【详细内容】
2023-11-20  趣谈前端  微信公众号  Tags:前端架构   点击:(0)  评论:(0)  加入收藏
干净的前端架构,看完这篇让你能够构建更简洁的前端架构
干净的前端架构,围绕这个话题有很多原则:SOLID、KISS(保持简单明了)、DRY(不要重复自己)、DDD(领域驱动设计)等等。为什么需要前端架构?功能性和非功能性的要求不仅应该在后端应用,还...【详细内容】
2023-11-20  大迁世界  微信公众号  Tags:架构   点击:(2)  评论:(0)  加入收藏
深入剖析SpringBoot底层原理
作者 | 波哥审校 | 重楼记得差不多在2015年以前,要部署一个Web应用,那得准备各种Web容器,比如Tomcat,然后打war包,然后部署到Web容器的特定目录下,以此来完成一个应用的部署,而且应...【详细内容】
2023-11-20    51CTO  Tags:SpringBoot   点击:(3)  评论:(0)  加入收藏
云计算时代下的系统技术架构设计与实践
随着云计算技术的快速发展,越来越多的企业和组织将其业务和应用迁移到云平台上。云计算为用户提供了弹性的计算资源、灵活的服务模式和高效的运维管理,成为了当今信息技术领域...【详细内容】
2023-11-16  旅游美景收藏王    Tags:架构设计   点击:(5)  评论:(0)  加入收藏
分布式限流与用户隐私保护
随着数字化时代的到来,个人数据的保护和隐私安全成为了一个日益重要的问题。在互联网应用中,用户的个人信息和隐私数据往往会被收集、存储和使用。为了保护用户的隐私权益,分布...【详细内容】
2023-11-16  王旭妍爱生活    Tags:分布式   点击:(6)  评论:(0)  加入收藏
负载均衡在大规模分布式系统中的应用:解决性能瓶颈
随着互联网的快速发展,大规模分布式系统在各行各业得到了广泛应用。这些系统需要处理大量的请求和数据,面临着性能瓶颈的挑战。负载均衡作为一种关键的技术手段,可以帮助大规模...【详细内容】
2023-11-14  办公小能手    Tags:负载均衡   点击:(14)  评论:(0)  加入收藏
如何构建六层大数据堆栈架构
面对大数据挑战而扩展其传统基础设施的企业应考虑使用专门构建的软件产品和服务来构建大数据堆栈架构。大数据堆栈是一套互补的软件技术,用于管理和分析对于传统技术来说太大...【详细内容】
2023-11-10    企业网D1Net  Tags:架构   点击:(11)  评论:(0)  加入收藏
十个使用Spring Cloud和Java创建微服务的实践案例
在使用Java构建微服务时,许多人认为只要学习一些微服务设计模式就足够了,比如CQRS、SAGA或每个微服务一个数据库。虽然这是正确的,但同时学习一些通用的最佳实践也是很有意义的...【详细内容】
2023-11-10  Java学研大本营  微信公众号  Tags:Spring   点击:(7)  评论:(0)  加入收藏
SpringBoot整合ElasticSearch详解及相关使用方法
环境:springboot2.4.12 + ElasticSearch7.8.0简介Elasticsearch是一个分布式搜索引擎,底层基于Lucene实现。它屏蔽了Lucene的底层细节,提供了分布式特性,同时对外提供了Restful...【详细内容】
2023-11-10  Spring全家桶实战案例源码    Tags:SpringBoot   点击:(14)  评论:(0)  加入收藏
没用过微服务?别慌,丐版架构图,让你轻松拿捏面试官
很多人都说现在是云原生、大模型的时代,微服务已经过时了,但现实的是,很多人开发多年,都没有在实际的开发中用过微服务,更别提搭建微服务框架和技术选型了。面试的时候都会问,怎么...【详细内容】
2023-11-10  哪吒编程  微信公众号  Tags:微服务   点击:(12)  评论:(0)  加入收藏
站内最新
站内热门
站内头条