简述什么是微前端 微前端几种框架的区别

news2024/11/27 5:35:47

微前端就是将各个模块分成不同项目 方便多个团队一起开发互相不影响 

例如:a团队维护较老的项目使用angular,b团队开发react,c团队开发vue 。按道理说abc三个项目并没有关联,但是他们又都是公司内部管理的系统。需要集成在一起 ,这时候就可以使用微前端技术了,我们可以将用户信息单独抽离在主项目,这样我们就可以只登陆一次,打开各个项目。

类似于如下效果:每个系统是独立模块

微前端的优点:

 1.接入项目与使用技术栈无关

2.各个项目相互独立,独立开发,独立后端

3.增量式升级(可以一点点增加新的系统进入)

4.独立运行

 其实我们平时接触的iframe就是微前端的一种

下面简单介绍一下市场上常用的微前端框架:single-spa,qiankun,micro-app(推荐),wujie(推荐),

iframe

iframe优点:

iframe 自带的样式、环境隔离机制使得它具备天然的沙盒机制(相互隔离)。

嵌入子应用比较简单,学习较为简单。

iframe缺点:

iframe功能之间的跳转是无效的,刷新页面无法保存状态。

URL的记录完全无效,刷新会返回首页。

主应用劫持快捷键操作,事件冒泡不穿透到主文档树上。

模态弹窗的背景是无法覆盖到整个应用。

iframe应用加载失败,内容发生错误主应用无法感知,通信麻烦。

综上,iframe也可以实现微前端,但是需要解决其自身的诸多弊端。公司的无界微前端就是基于iframe实现的。

single-spa

官网:single-spa | single-spa

必须要在入口函数中暴露三个钩子函数(bootstrap-启动,mount-挂载,unmount-销毁)给主程序用

缺点:

1.子应用会出现样式冲突,样式污染。

2.js也会存在同样的污染问题 

3.主应用必须得手动加载子应用打包好的lib库文件

qiankun

阿里开发 基于singe-spa封装 umi插件 提供了umi应用一键切换为微前端

 官方文档:快速上手 - qiankun

特点:

1.通过html<qiankun>方式接入 较为简单快捷 

2.样式隔离 (类似与:scoped)

3.沙箱运行

4.资源预先加载(主应用执行start /挂载以后立刻去预加载其他应用的静态资源)

5.应用之间可以完成通信

6.技术开发3年对于其他技新技术来说较为稳定

micro-app

京东开发 micro-app 并没有沿袭 single-spa 的思路,而是借鉴了 WebComponent 的思想

将前端封装为一个webcomponent组件 使用shadowDom隔离 

官方文档:MicroApp

优点:

1.不需要更改子应用项目逻辑方法 也不需要修改webpack 使用简单

2.对比qiankun 子项目的入侵性更小 

缺点:技术较新 可能不稳定

wujie

腾讯开发 基于 Web Components + iframe 的微前端架

官方文档:bus | 无界

优点:

1.预加载 

2.开箱立即使用 开发成本较低

3.应用保活(类似于:keep-alive)

4.js,css沙箱

缺点:技术较为新可能不稳定 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能排班系统 【管理系统功能、操作说明——中篇】

文章目录 页面与功能展示企业管理角色管理用户管理系统管理员身份使用企业管理员身份使用门店管理员身份使用 门店管理职位管理排班规则设置节日管理消息管理 页面与功能展示 企业管理 企业管理页面如图 34所示&#xff0c;在企业管理页面&#xff0c;系统管理员可以查询所注…

IAT Hook

一、IAT HOOK介绍 IAT (Import Address Table) HOOK 是一种在 Windows 程序中进行函数钩子的技术。它通过修改程序的导入地址表来实现对目标函数的替换或拦截。 在 Windows 运行时&#xff0c;程序需要调用其他模块&#xff08;DLL&#xff09;中的函数来完成特定的功能。为了…

java项目打包方式

普通项目打包 项目内容很简单&#xff0c;只是引用了一个三方包。 打包步骤 File-Project Structure... 点击确定后选择Build - Build Artifacts.. 选择build即可&#xff0c;可以查看编译日志 maven项目打包 若果是普通项目就先转为maven项目。 右键项目选择第二项add frame…

【Netty】Netty 解码器(十二)

文章目录 前言一、编解码概述1.1、编解码器概述1.2、Netty 内嵌的编码器 二、解码器2.1、ByteToMessageDecoder 抽象类2.1.1、常用方法2.1.2、将字节转为整形的解码器示例 三、ReplayingDecoder 抽象类四、MessageToMessageDecoder 抽象类总结 前言 回顾Netty系列文章&#xf…

K-Means算法实现鸢尾花数据集聚类

目录 1. 作者介绍2. K-Means聚类算法2.1 基本概念2.2 算法流程 3. K-Means聚类算法实现3.1 鸢尾花数据集3.2 准备工作3.3 代码实现3.4 结果展示 4. 问题与解析参考链接 1. 作者介绍 张勇&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2022级研究生 研究方向…

第3章“程序的机器级表示”:算术和逻辑操作

文章目录 3.5 算术和逻辑操作3.5.1 加载有效地址3.5.2 一元和二元操作3.5.3 移位操作3.5.4 讨论3.5.5 特殊的算术操作 3.5 算术和逻辑操作 下图列出了一些双字整数操作&#xff0c;分为四类。 二元操作有两个操作数&#xff0c;而一元操作只有一个操作数。 描述这些操作数的…

极光笔记 | EngageLab Push的多时区解决方案

01、引言 多时区问题一直是全球客户和终端用户面临的挑战之一。EngageLab Push 致力于解决这个问题&#xff0c;确保全球各地的终端用户可以平等地享受到同样的推送服务&#xff0c;同时让客户能够更好地管理不同时区的应用和对应的终端用户。 02、解决多时区问题的总体方案 1…

软件测试----软件开发模型

1、瀑布模型 &#xff08;1&#xff09;瀑布模型如下 &#xff08;2&#xff09;瀑布模型的缺点&#xff1a; 在瀑布模型中&#xff0c;测试是在编码结束后才介入&#xff0c;对软件开发流程前期质量是没有保障的 &#xff08;3&#xff09;采用瀑布模型的场景&#xff1a; …

31 KVM管理系统资源-管理虚拟内存NUMA

文章目录 31 KVM管理系统资源-管理虚拟内存NUMA31.1 NUMA简介31.2 配置Host-NUMA操作步骤 31.3 配置Guest-NUMA操作步骤 31 KVM管理系统资源-管理虚拟内存NUMA 31.1 NUMA简介 传统的多核运算使用SMP&#xff08;Symmetric Multi-Processor&#xff09;模式&#xff1a;将多个…

Flume系列:Flume 自定义Interceptor拦截器

目录 Apache Hadoop生态-目录汇总-持续更新 1&#xff1a;Interceptor拦截器的使用场景 2&#xff1a;Interceptor拦截器在采集流程中的位置 3&#xff1a;自定义Interceptor拦截器 pom.xml 拦截器java代码 打包上传 4&#xff1a;使用自定义的拦截器 方式一&#xff1…

Springboot +spring security,自定义认证和授权异常处理器

一.简介 在Spring Security中异常分为两种&#xff1a; AuthenticationException 认证异常AccessDeniedException 权限异常 我们先给大家演示下如何自定义异常处理器&#xff0c;然后再结合源码帮助大家进行分析 二.创建项目 如何创建一个SpringSecurity项目&#xff0c;前…

分布式锁和事务关系的细节

使用redssion在redis上以及结合自定义注解利用spring的环绕切面来实现分布式锁功能 代码示例 controller、service层 RequestMapping("insertNumber/{number}/{id}") public boolean insertNumber(PathVariable Long number,PathVariable Long id){return testSer…

rust 中protobuf生成与使用

首先创建一个项目proto 进入到这个文件夹中 创建我们的proto文件 初始化的项目结构是这个样子的 新建一个hello.proto文件内容如下 syntax "proto3";package hello;service Greeter {rpc SayHello (HelloRequest) returns (HelloReply) {} }message HelloRequest …

干货 | 师兄手把手教你如何踏上科研道路

Hello&#xff0c;大家好&#xff01; 这里是壹脑云科研圈&#xff0c;我是喵君姐姐&#xff5e; 今天&#xff0c;邀请到鲁小白&#xff0c;给大家分享一下他踏上科研道路的心路历程。 大家好&#xff0c;我是鲁小白&#xff0c;我真正进入科研的时间&#xff0c;研究生3年再…

【C++】类和对象——类的引入、类的访问限定符、类的作用域、类的实例化、类的储存、this指针的引出和特性

文章目录 1.类的引入2.类的访问限定符3.类的作用域4.类的实例化5.类的储存6.this指针6.1this指针的引出6.2this指针的特性 1.类的引入 C是在C的基础上加以扩展。 在C语言中&#xff0c;我们想要让一个类型含有多种成员变量&#xff0c;我们使用结构体&#xff1b;而在C中我们可…

Doris节点扩容及数据表

扩容和缩容 上篇文章简单讲了doris的安装&#xff0c;本章分享的是doris中fe和be节点的扩容缩容以及doris的数据表1、FE 扩容和缩容 使用 MySQL 登录客户端后&#xff0c;可以使用 sql 命令查看 FE 状态&#xff0c;目前就一台 FE mysql -h linux -P 9030 -uroot -p mysql&…

python+django乡村居民数据的可视化平台

本论文主要论述了如何使用Django框架开发一个乡村振兴数据的可视化平台 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述乡村振兴数据的可视化平台的当前背景以…

拼多多二面,原来是我对自动化测试的理解太浅了

如果你入职一家新的公司&#xff0c;领导让你开展自动化测试&#xff0c;作为一个新人&#xff0c;你肯定会手忙脚乱&#xff0c;你会如何落地自动化测试呢&#xff1f; 01 什么是自动化 有很多人做了很长时间的自动化但却连自动化的概念都不清楚&#xff0c;这样的人也是很悲…

Android之 MVC到MVVM架构发展和封装

一 简介 1.1 软件架构发展趋势是解耦&#xff0c;即分离数据层和视图层&#xff0c;使得数据层专注于业务的数据和逻辑处理。从而提高代码的可读可编辑效率&#xff0c;提高团队协作能力&#xff0c;项目的生产能力&#xff0c;降低后期维护成本。 1.2 Android架构发展MVC -…

计算机组成原理实验四 微程序控制器实验报告

我班算是几乎最后一个做实验的班级了&#xff0c;报告参考了一些朋友提供的数据加上一些自己的主观拙见&#xff0c;本人水平有限加之制作仓促难免有错误&#xff0c;望大家批评指正。 4.1 微程序控制器实验 一、实验目的 (1) 掌握微程序控制器的组成原理。 (2) 掌握微程序的…