初探微前端

news/2024/10/18 19:25:40/

微前端

  • 一、微前端的背景和概述
    • 1.1 概念
    • 1.2 特点
    • 1.3 背景
  • 二、微前端的实现方式
    • 2.1 服务端集成
    • 2.2 运行时集成
  • 三、现有的解决方案
    • 3.1 single-spa
    • 3.2 qiankun
    • 3.3 micro-app
  • 四、总结

🚀🚀🚀
  随着互联网技术的不断发展,前端应用规模和复杂性也在不断增加。传统的单体前端应用面临着很多挑战,比如应用难以扩展、团队协作困难、技术栈选择不灵活等。为了应对这些挑战,微前端架构应运而生。本文将详细介绍微前端的背景、概念、实现方式以及现有的解决方案。

一、微前端的背景和概述

在这里插入图片描述

  随着互联网应用的不断发展,前端应用变得越来越复杂,功能模块和团队规模也在不断增加。在传统的单体前端架构中,所有功能模块都被打包在同一个前端应用中,这导致了应用的扩展性和可维护性变得非常困难。为了解决这些问题,微前端架构应运而生。

1.1 概念


  微前端 提供了一种技术:可以将多个独立的Web应用聚合到一起,提供统一的访问入口。一个微前端应用给用户的感观就是一个完整的应用,但是在技术角度上是由一个个独立的应用组合通过某种方式组合而成的。

  微前端的思路就是把微服务的架构引入到前端,其核心都是要能够以业务为单元构建端到端的垂直架构,使得单个的团体能够独立自主的进行相关的开发,同时又具有相当的灵活性,按需求组成交付应用。

1.2 特点


  1. 技术栈无关:主框架不限制接入应用的技术栈,子应用具备完全自主权。
  2. 独立性强:独立开发、独立部署,子应用仓库独立。
  3. 状态隔离:运行时每个子应用之间状态隔离。

1.3 背景


  “微前端”一词最早于2016年底在ThoughtWorks 技术雷达中提出的。它将微服务的概念扩展到了前端世界。当前的趋势是构建一个功能强大且功能强大的浏览器应用程序(也称为单页应用程序),该应用程序位于微服务架构之上。随着时间的流逝,通常由一个单独的团队开发的前端层会不断增长,并且变得更加难以维护。

  微前端背后的想法是将网站或Web应用程序视为由独立团队拥有的功能的组合。每个团队都有自己关心和专长的不同业务或任务领域。一个团队是跨职能的,并且从数据库到用户界面,端到端地开发其功能。

  但是,这个想法并不新鲜。它与“单体系统”概念有很多共同点。在过去,类似的方法被称为“垂直系统的前端集成”。但是微前端显然是一个更友好,更轻巧的术语。

  在微服务的架构中,后台的服务已经按照业务进行了分离,而前端仍然是一个单体构建,通过网关来调用不同的后台服务。这个微服务的思路是相违背的,这也就造成了你的后端团队是按照业务分割的,但是前端团队仍然是一个整体。微前端可以有效地改进这一点。

  微前端的核心思路其实是远程应用程序,包含组件/模块/包的运行时加载。

二、微前端的实现方式

2.1 服务端集成


  微前端的第一种实现思路是服务端集成,即通过 Nginx 配置反向代理来实现不同路径映射到不同应用,这样可以实现项目的独立开发和部署。

在这里插入图片描述

  但同时这种做法也会丢失 SPA 的体验,每一次命中路由都会重新请求资源,不能局部更新当前页面。

SPA(Single-Page Application): 它指的是单页面应用程序。这种应用程序运行在浏览器中,能够动态地更新用户界面,而无需重新加载整个页面。通常,SPA主要依赖于JavaScript来控制页面的渲染和数据的交互,其核心是前端框架或库,如AngularReactVue

2.2 运行时集成


  另一种方法就是运行时集成,这种方法一种实现就是使用iframe,通过配置不同的src加载不同的子应用页面。

<iframe src="https://test.qq.com/a/index.html"></iframe>

iframe优点

  • iframe自带的样式、环境隔离机制使得它具备天然的沙盒机制
  • 嵌入子应用比较简单。

iframe缺点

  • iframe 功能之间的跳转是无效的,刷新页面无法保存状态
  • URL的记录完全无效,刷新会返回首页。
  • 主应用劫持快捷键操作,事件冒泡不穿透到主文档树上。
  • 模态弹窗的背景是无法覆盖到整个应用。
  • iframe 应用加载失败,内容发生错误主应用无法感知,通知麻烦

综上,iframe也可以实现微前端,但是需要解决其自身的诸多弊端。

三、现有的解决方案

  目前,已经有一些成熟的微前端解决方案可供选择,下面介绍其中几种常用的解决方案。

3.1 single-spa


在这里插入图片描述

  single-spa 是一个用于构建前端微服务架构的 JavaScript 框架。它可以让你在同一个页面上同时运行多个独立的 JavaScript 应用,这些应用可以由不同的团队开发和维护,并且可以使用不同的技术栈。

  single-spa 的核心思想是将前端应用拆分成小的功能模块,每个模块独立运行并与其他模块进行通信。每个模块可以是一个单页应用、一个 React 组件、一个 Angular 模块等。single-spa提供了一套 API 和生命周期钩子,用于管理这些模块的加载、卸载和通信。

single-spa 具有以下特点

  1. 技术无关性:可以使用任意技术栈开发模块,比如 ReactAngularVue等。
  2. 应用自治:每个模块独立运行,有自己的路由和状态管理,不会受到其他模块的影响。
  3. 动态加载:每个模块可以在需要时动态加载,提高应用的性能和加载速度。
  4. 增量迁移:可以将现有的单页应用逐步迁移到微服务架构,而不需要重写整个应用。

3.2 qiankun


在这里插入图片描述

  qiankun 是一个基于浏览器端的微前端解决方案,它由蚂蚁金服开发并开源。它旨在帮助开发者将复杂的前端应用拆分成多个子应用,每个子应用可以独立开发、独立运行、独立部署,同时可以通过 qiankun 进行整体的集成和协同工作。

  qiankun 的核心思想是将前端应用拆分成多个微前端子应用,然后通过 qiankun 进行整合。每个子应用可以使用不同的技术栈和框架,并且可以独立开发和部署。qiankun 提供了一套统一的通信机制和应用间路由管理,使得不同的子应用可以相互通信和跳转。

  使用 qiankun 可以带来很多好处。首先,它可以提高前端团队的开发效率,不同的子应用可以并行开发,互不干扰。其次,qiankun 支持独立部署和动态加载,可以实现按需加载和懒加载,减小首屏加载时间。此外,qiankun 还提供了一些监控和调试工具,方便开发者进行性能优化和故障排查。

3.3 micro-app

在这里插入图片描述


  micro-app 是一个基于 Web Component 技术的微前端框架,它可以将不同的前端应用封装成独立的 Web Component,然后通过自定义元素的方式进行集成。

   micro-app 支持各种前端框架,如 ReactAngularVue 等,使得开发者可以选择最适合自己的技术栈。同时,micro-app 还提供了一些可视化工具和插件,方便开发者进行调试和监控。micro-app 通常具有以下特点:

  1. 独立性micro-app 可以独立运行,不依赖于其他应用程序或者系统环境。它可以作为一个独立的应用程序安装和卸载,并且有自己的界面和用户交互。
  2. 轻量级micro-app 通常具有较小的体积和内存占用,可以快速启动和执行。这使得它们适合在资源受限的设备上运行,如手机、智能手表等。
  3. 模块化micro-app 通常以模块化的方式组织代码和功能。每个模块只包含特定的功能和服务,可以独立开发、测试和部署。这种模块化的设计使得开发、维护和扩展变得更加容易。
  4. 可扩展性micro-app可以通过插件或者扩展机制进行扩展。开发者可以根据需要添加额外的功能模块或者服务,并且这些扩展可以在运行时动态加载和卸载。
  5. 跨平台micro-app 可以跨平台运行,适配不同的操作系统和设备。它们可以使用特定的开发框架或者技术栈,如 React NativeFlutter等,来实现跨平台的支持。

四、总结


🚀 🚀
  微前端框架是解决大型前端应用复杂性和可扩展性的重要手段之一。通过将前端应用拆分成独立的功能模块,每个模块都可以独立开发、部署和运行,可以提高开发效率、降低团队间的沟通成本,并且使得应用更加稳定和可扩展。目前,已经有一些成熟的微前端解决方案可供选择, 如 single-spaqiankunmicro-app 等,开发者可以根据自己的需求选择最合适的解决方案进行开发。


http://www.ppmy.cn/news/1117311.html

相关文章

Haproxy集群与常见的Web集群调度器

文章目录 1. Web集群调度器概述1.1 Web集群调度器简介1.2 调度器类别1.2.1 常用软件类1.2.2 常用硬件类 2. Haproxy软件介绍2.1 Haproxy简介2.2 支持功能2.3 主要特性2.4 常用调度算法2.4.1 轮询&#xff1a;RR&#xff08;Round Robin&#xff09;2.4.2 最小连接数&#xff1a…

OSI七层网络参考模型与数据流通过程

OSI七层网络参考模型 文章目录 OSI七层网络参考模型1. OSI参考模型初步了解2. OSI参考模型理解3. 数据流通的过程 1. OSI参考模型初步了解 OSI&#xff0c;英文为Open System Interconnect&#xff0c;意为开放式系统互连&#xff0c;国际化标准组织(ISO)指定了OSI模型&#x…

latexocr安装过程中遇到的问题解决办法

环境要求&#xff1a;需要Python版本3.7&#xff0c;并安装相应依赖文件 具体的详细安装步骤可见我上次写的博文&#xff1a;Mathpix替代者|科研人必备公式识别插件|latexocr安装教程 ‘latexocr‘ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件的相关解决办…

【新版】系统架构设计师 - 案例分析 - 数据库设计

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 数据库设计数据库基础数据库设计概述E-R模型概念结构设计逻辑结构设计规范化&#xff08;范式&#xff09;反规范化技术数据库事务并发控制索引视图物化视图存储过程触发器数据库性能优…

ESP8266 Windows下开发环境搭建

文章目录 1、SDK下载2、Windows下的开发工具链安装3、ESP8266专用工具链安装4、运行msys32目录下的mingw32.exe&#xff0c;初始化环境5、配置环境变量6、编译hello world例程7、SDK配置8、烧录9、在串口助手中查看 1、SDK下载 官方提供了两种SDK&#xff0c;OS版本和非OS版本…

卷运维不如卷网络安全

最近发现很多从事运维的选择了辞职&#xff0c;重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的&#xff0c;不管什么环节出现问题&#xff0c;基本都是运维背锅。背锅也就罢了&#xff0c;薪资水平也比不上别的岗位。 一般运维的薪资水平大多数…

产品新闻稿件怎么写?纯干货

写产品新闻稿件需要遵循一定的结构和写作规范&#xff0c;接下来伯乐网络传媒来给大家分享一下&#xff0c;以下是一些建议和步骤&#xff0c;供您参考&#xff1a; 标题&#xff1a;使用简洁、准确的语言来概括产品的核心信息&#xff0c;吸引读者的兴趣。 导语/导览&#xf…

【ArcGIS】基本概念-矢量空间分析

栅格数据与矢量数据 1.1 栅格数据 栅格图是一个规则的阵列&#xff0c;包含着一定数量的像元或者栅格 常用的栅格图格式有&#xff1a;tif&#xff0c;png&#xff0c;jpeg/jpg等 1.2 矢量数据 矢量图是由一组描述点、线、面&#xff0c;以及它们的色彩、位置的数据&#x…