首页 > 其他分享 >了解微前端

了解微前端

时间:2023-06-27 14:45:47浏览次数:31  
标签:浏览器 应用 前端 问题 了解 iframe 隔离

什么是微前端
微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。
微前端(Micro-Frontends)是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。

微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。这类问题在企业级 Web 应用中尤其常见。

换一种更直观的理解方式:父应用和子应用其实都是独立的前端项目,父应用可以在内部引入子应用,子应用也可以在自己内部继续引入孙子应用,以此类推。当应用能够作为子应用被其它应用引入的时候,它就成为了我们所说的微应用。

优点
微前端架构具备以下几个核心价值:
● 技术栈无关
主框架不限制接入应用的技术栈,微应用具备完全自主权
● 独立开发、独立部署
微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新
● 增量升级
在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略
● 独立运行时
每个微应用之间状态隔离,运行时状态不共享

微前端解决了什么问题?
微前端架构旨在解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。这类问题在企业级 Web 应用中尤其常见。比如:

● 原本一个团队管理的项目,后面多个团队进行管理
● 随着项目的体积变大,编译的速度变长,研发效率降低
● 项目变大,系统的复杂度也会随之变大,可维护性越来越低,重构成本越来越大
● ...

通过微前端拆分成一个容器应用和多个子应用之后,各个应用能够独立部署,相互之间隔离,从而做到:
● 研发效率提升:多业务线并行开发,团队自治,独立迭代
● 运维风险降级:变更范围缩小
● 技术选择增多:各个应用可以选择更加适合自身的技术栈
● 重构风险降低:低风险局部替换,渐进式完成大规模重构
● ...

为什么不用iframe

如果不考虑体验问题,iframe 几乎是最完美的微前端解决方案了。
iframe 最大的特性就是提供了浏览器原生的硬隔离方案,不论是样式隔离、js 隔离这类问题统统都能被完美解决。但他的最大问题也在于他的隔离性无法被突破,导致应用间上下文无法被共享,随之带来的开发体验、产品体验的问题。

  1. url 不同步。浏览器刷新 iframe url 状态丢失、后退前进按钮无法使用。
  2. UI 不同步,DOM 结构不共享。想象一下屏幕右下角 1/4 的 iframe 里来一个带遮罩层的弹框,同时我们要求这个弹框要浏览器居中显示,还要浏览器 resize 时自动居中..
  3. 全局上下文完全隔离,内存变量不共享。iframe 内外系统的通信、数据同步等需求,主应用的 cookie 要透传到根域名都不同的子应用中实现免登效果。
  4. 慢。每次子应用进入都是一次浏览器上下文重建、资源重新加载的过程。

其中有的问题比较好解决(问题1),有的问题我们可以睁一只眼闭一只眼(问题4),但有的问题我们则很难解决(问题3)甚至无法解决(问题2),而这些无法解决的问题恰恰又会给产品带来非常严重的体验问题, 最终导致我们舍弃了 iframe 方案。

缺点

● 应用的拆分基础依赖于基础设施的构建,一旦大量应用依赖于同一基础设施,那么维护变成了一个挑战。
● 拆分的粒度越小,便意味着架构变得复杂、维护成本变高。
● 技术栈一旦多样化,便意味着技术栈混乱
● 多次加载重复资源,指定跳转的子应用入口也必须加载,并且执行一次子应用框架库。

只要坚持使用一种框架,并利用像 qiankun 这样的协作框架,你就可以通过资源共享和只需下载一次的公共代码来避免大多数性能损失。

标签:浏览器,应用,前端,问题,了解,iframe,隔离
From: https://www.cnblogs.com/dirtycat/p/17508824.html

相关文章

  • 前端项目部署到nginx
    前端项目部署到nginx配置好本地的nodejs环境切换到前端项目所在的文件目录以命令行的方式运行npmrunbuild命令命令执行成功会生成dist文件夹,将文件夹中的内容压缩上传到nginx_html数据卷对应的目录下执行解压命令unzipdist.zip删除压缩包rm-rfdist.zip即可访问nginx......
  • 外汇天眼:了解外汇基础知识和掌握投资技巧!
    迄今为止,外汇市场是全球最大的金融市场,但对于投资者来说,这个市场充满了机遇和挑战。要想在外汇市场取得成功,首先需要了解其基础知识和掌握相应的投资技巧。今天这篇文章将为投资者详细介绍外汇市场的基本概念、交易方式和投资策略,以此帮助投资者更好地把握外汇市场的脉搏。一、外汇......
  • 5分钟了解二叉树之红黑树
    转载请注明出处:https://i.cnblogs.com/posts/edit;postId=16032891 书接上一回。上一篇已经讲解到了AVL树,这一篇会接着讲另一个重量级的数据结构:红黑树。红黑树红黑树是一种自平衡二叉搜索树。每个节点存储一个表示“颜色”(“红色”或“黑色”)的额外位,用于确保树在插入和删......
  • 前端字符编码
    在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态(-128~127),这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111 ......
  • 前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求
    前端Vue自定义加载中loading加载结束end组件可用于分页展示页面加载请求,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13219效果图如下:实现代码如下:cc-paging使用方法<!--加载中用法isLoading:是否加载isEnd:是否结束加载--><cc-paging:isLoad......
  • 前端Vue自定义发送短信验证码弹框popup 实现剩余秒数计数 重发短信验证码
    前端Vue自定义发送短信验证码弹框popup实现剩余秒数计数重发短信验证码,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13207效果图如下:实现代码如下:cc-codeDialog使用方法<!--show:是否显示弹框phone:手机号 autoCountdown:自动时间秒数len:短信......
  • 前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏 验证码登录模版 密码登录模
    前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏验证码登录模版密码登录模版,请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13221效果图如下:实现代码如下:cc-selectBox使用方法<!--select-arr:选择数组nowindex:当前选择序列@change:切换选择......
  • 用户画像-了解用户需求的关键之道
       在当今数字化时代,企业追求提供个性化、定制化的产品和服务已经成为一种趋势。而要实现这一目标,了解用户需求是至关重要的。而用户画像作为一种关键工具,能够帮助企业深入了解用户群体并进行精准的市场定位。本文将介绍用户画像的概念、作用,并结合实际例子和代码,帮助读者更......
  • 08异步短信发送,注册功能,补充【1.为什么要写media才能访问,2.debug作用,3.ALLOWED_HOSTS
    1异步发送短信#原来的发送短信,是同步 -前端输入手机号---》点击发送短信---》前端发送ajax请求----》到咱们后端接口---》取出手机号----》调用腾讯发送短信---》腾讯去发短信---》发完后----》回复给我们后端发送成功---》我们后端收到发送成功---》给我们前端返回发送成功......
  • 基于前端Vue后端.NetCore Web后台管理系统通用开本框架采用前后端分离技术
    基于前端Vue后端.NetCoreWeb后台管理系统通用开本框架采用前后端分离技术,前端使用vue2.6.0,后端使用.netcore3.1,支持跨平台、多租户、支持MySQLSQLServerOracle多数据库,模块化设计,高性能,高颜值,不管是个人学习还是企业做项目都非常适合 原创文章,转载请说明出处,资料来源:http://im......