简单聊聊微前端

news/2024/11/14 8:07:11/文章来源:https://www.cnblogs.com/EternalZH/p/18542500

什么是微前端?

微前端是一种前端架构模式,它将一个庞大的前端应用拆分为多个独立、小型的应用,这些小型应用可以独立开发、独立运行、独立部署,但对用户而言,它们仍然是一个统一的整体。这种架构模式主要是为了解决传统单体应用在大型项目中遇到的问题,如代码冗余、开发效率低下、部署风险高等。

为什么要用微前端?

  1. 模块化与解耦

      微前端强调模块化,每个微应用都是一个独立的模块,这使得代码更加清晰、易于维护。
      通过将前端应用拆分为多个独立的子应用,可以实现业务逻辑的解耦,降低系统的复杂性。
  1. 提高开发效率

      微前端架构允许不同团队并行开发各自的微应用,从而缩短了开发周期。
      由于微应用可以独立部署,因此无需等待其他团队的开发进度,即可快速上线新功能。
  1. 降低部署风险

      在传统的单体应用中,每次部署都涉及整个应用的更新,风险较高。而微前端架构下,每次只需部署更新的微应用,降低了部署的风险和影响范围。
  1. 技术栈灵活性

      微前端架构不限制接入的微应用的技术栈,这意味着团队可以根据自身需求和技术储备选择合适的技术栈进行开发。
      这种灵活性有助于团队尝试新技术、保持技术栈的更新和多样性。
  1. 渐进式重构与升级

      对于遗留系统或大型项目,微前端提供了一种渐进式重构和升级的策略。通过逐个替换或升级微应用,可以逐步实现整个系统的现代化改造。
  1. 更好的用户体验

      微前端架构有助于优化前端性能,如减少首次加载时间、提高页面响应速度等,从而提升用户体验。
      通过动态加载和卸载微应用,可以实现更细粒度的资源管理和优化。

行业解决方案?

  1. 基于路由分发的微前端方案

      这种方案通过配置路由来分发请求到不同的微应用。每个微应用可以独立开发、测试和部署,而在用户看来仍然是内聚的单个产品。此方案的优点包括简单、快速和易配置,但可能在切换应用时触发浏览器刷新,影响体验。
  1. 基于iframe的微前端方案

      iframe作为一种古老的技术,可以轻松地从独立的子页面构建页面,提供天然的隔离性。这种方案的优点是实现简单、技术不限制,但缺点是可能存在Bundle大小各异、SEO不友好、URL状态不同步、DOM结构不共享以及全局上下文完全隔离等问题。
  1. 基于Web Components的微前端方案

      Web Components是浏览器的原生组件,允许创建可重用的用户界面小部件。这种方案的优点包括技术栈无关、独立开发和应用间隔离。然而,由于Web Components的浏览器和框架支持不够广泛,可能需要更多的polyfills,且重写现有的前端应用和系统架构可能较为复杂。

      MicroApp

        特点:由京东出品,基于WebComponent的思想实现的微前端框架。它轻量、高效,且提供了js沙箱、样式隔离、元素隔离、预加载等一系列完善的功能。
        优势:使用起来成本较低,不需要修改子应用的渲染逻辑或webpack配置,接入微前端成本较低。此外,它无任何依赖,体积小巧,扩展性高。
        适用场景:适合需要快速集成不同技术栈子应用的项目。
  1. 基于Module Federation的微前端方案

      Module Federation是webpack5新增的功能,可以帮助将多个独立的构建组成一个应用程序。这种方案的优点包括开箱即用、独立开发与部署、去中心化和组件共享。但缺点是可能无法提供沙箱隔离、技术单一(仅限使用webpack5以上版本)、代码封闭性高以及拆分粒度需要权衡。

      EMP(Esm Module Federation):

        特点:基于Webpack 5 Module Federation特性进行二次封装,特别优化了对ESM(ECMAScript Modules)的支持。它允许多个应用共享模块,子应用可以在不重新构建的情况下被主应用加载和使用。
        优势:完全支持ESM模块系统,减少模块解析开销,提高加载效率。相比原生的Module Federation,EMP配置更简便。
        不足:学习曲线存在,虽然配置简化,但依然需要掌握Module Federation的核心概念。此外,技术栈有限制,需要使用Webpack 5,且社区支持相对较少。
  1. 中心基座方案(如qiankun等)

      中心基座方案是目前主流的微前端采用的技术方案之一。

      qiankun:

      基于single-spa进行二次开发,提供了更加开箱即用的API、样式隔离、JS沙箱和资源预加载等功能。这种方案的优点是技术栈无关、易于集成和管理微应用,但可能需要注意沙箱隔离的完善性和性能优化。

      Single-spa

        特点:Single-spa是最早的微前端框架,它允许多个前端框架应用(如Vue、React、Angular)同时工作在同一个页面上。每个子应用可以使用不同的框架,技术栈灵活。
        优势:提供了依赖共享机制,避免多个应用加载相同的依赖包,且生态完善,有丰富的社区插件和工具支持。
        不足:学习曲线较陡峭,配置较为复杂,需要专门学习,且在同时加载多个子应用时性能可能受影响。

      Garfish

        特点:字节跳动推出的微前端框架,专注于轻量级和高性能的解决方案。它无需复杂的配置即可使用,适合快速开发,且支持多种前端框架。
        优势:性能优越,适合对速度有要求的项目。同时提供了技术栈无关的支持,灵活性高。
        不足:相对于其他成熟的微前端方案,Garfish的社区支持和文档相对较少,且在某些复杂场景下可能需要额外的开发工作。
  1. 自由框架组合模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832420.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Bulk-Crap-Uninstaller:一个高效卸载,轻松管理你的应用程序的.Net开源工具

我们在工作中,经常需要安装大量的软件,随着应用程序的不断增多,管理这些软件变得非常困难。 下面介绍一款具备高效、简洁的特点,可以帮助我们快速卸载大量不需要的应用程序,让电脑管理变得更加轻松。01 项目简介 Bulk-Crap-Uninstaller是一款开源的软件卸载工具,基于.Net…

绘制3D架构图,原来这么简单

在软件开发的世界里,架构图是系统设计的蓝图,它们不仅帮助团队理解系统的整体结构,还能提升沟通效率,确保项目的顺利推进。然而,绘制一张清晰、直观的架构图,往往需要大量时间和专业工具。面对繁琐的操作和复杂的学习曲线,不少程序员感到力不从心。 之前DD有给大家推荐过…

AI千恋万花(java调用api实现)附完整项目及注释)重置版)

感觉博客的第一版质量有点低下了,删了重置一下,希望能给其他人的代码带来一些灵感前情提要:https://www.cnblogs.com/h4o3/p/18523151 由于是匆忙制作的老婆系统,主界面已经菠萝菠萝哒。(有点廉价) 注册和登录功能用了MySQL实现(其实没什么卵用,为了顺手交个作业临时加…

鲲鹏V10安装人大金仓

1.下载人大金仓数据库 https://www.kingbase.com.cn/xzzx/index.htm 2.创建安装用户 useradd kingbase#将安装包权限赋予kingbase用户chown -R kingbase:kingbase /home/kingbase#创建安装目录并赋权mkdir -p /usr/local/apps/KingbaseESmkdir -p /usr/local/apps/Kingbasechow…

centos7安装elasticsearch:7.9.3

服务器安装elasticsearch:7.9.3 一、安装前准备检查系统环境:确保CentOS 7系统已经更新到最新版本。 检查系统的硬件资源,确保满足Elasticsearch的安装和运行要求。安装OpenJDK:Elasticsearch需要Java环境,这里选择安装OpenJDK 11。 使用命令sudo yum install java-11-open…

Golang 编译windows应用程序

因为我们更喜欢在Linux上开发程序, 所以生成交叉编译器,以便在Linux上交叉编译出windows程序。 安装minGW:在Linux上运行gcc交叉编译生成windows程序 我们用到Cgo,因此需要安装 C 语言交叉编译器 sudo apt-get install gcc-mingw-w64 下载Go语言的源代码 git clone https:/…

The platform metadata area could not be written: /Volumes/MemoryAnalyzer1/MemoryAnalyzer.app/Content

mac安装MAT报错:The platform metadata area could not be written: /Volumes/MemoryAnalyzer1/MemoryAnalyzer.app/Content 。。。。。解决:创建文件夹 /Users/mzj/storage/data/mat/data

Centos7安装部署Nagios

简介 Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能。 1、Nagios 核心及插件将安装在/usr/local/nagios 2、Nagios 核心会配置好监控当前服务器的一些基本信息 仅供参考,记录一下centOS7下nagios配置步骤,完整的步骤以及原理请参照原…

全媒体数字化转型,业务和技术双管齐下

不少传媒企业已经开始积极探索转型之路。通过打造个性IP工作室、重视C端用户服务、深化G端合作等方式,传媒行业正在逐步构建起一个以用户为中心、以数据为驱动、以创新为核心的新型媒体生态。2024年,是我国全功能接入国际互联网30周年。 在这个特殊的年份,中国的传媒行业也同…

南谷的往事与未来

纯属娱乐 本人南海实验中学 制作人员信息队自娱自乐在Tail Nightly建了个南谷一位作文大蛇就写下了一篇小说(在更新) 喜剧小说,神话小说 对事不对人,内容纯属虚构,切勿对号入座 南谷的往事与未来 洛谷网址 喜剧小说,神话小说 对事不对人,内容纯属虚构,切勿对号入座 作者…

前端构建工具对比

工具特性解析 1. Webpack输入输出灵活:支持单文件和多文件输入输出,可以进行复杂的模块化输出,并且支持全目录结构。 文件捆绑和格式支持:具有强大的捆绑功能,并支持 ESM、CJS、UMD 等模块格式输出。 CSS 和资源处理:具备强大的 CSS 预编译和资源处理能力,并支持插件扩展…

静态测试解决方案

经纬恒润拥有十几年的嵌入式软件开发及测试经验及经验丰富的软件测试团队,能够借助测试工具及设备给客户提供优质的静态测试服务。 随着自动驾驶、车联网等技术突飞猛进的发展,汽车中包含的软件越来越多。如何保证这些软件的质量成了重中之重。经纬恒润拥有十几年的嵌入…