qiankun知识点

1,什么是微前端

1,微前端是指存在于浏览器中的微服务,其借鉴了微服务的架构理念,将微服务的概念扩展到了前端。

2,如果对微服务的概念比较陌生的话,可以简单的理解为微前端就是将一个大型的前端应用拆分成多个模块,每个微前端模块可以由不同的团队进行管理,并可以自主选择框架,并且有自己的仓库,可以独立部署上线。

3,一般呢,微前端多应用于企业中的中后台项目中,因为企业内部的中后台项目存活时间都比较长,动辄三五年或者更多,最后演变成一个巨石应用的概率往往高于其他类型的web应用。这就带来了技术栈落后

2,微前端的好处

1,**团队自治:**在公司里面,一般团队都是按照业务去划分的,在没有微前端的时候,如果几个团队维护一个项目肯定会遇到一些冲突,比如合并代码的冲突,上线时间的冲突等。应用了微前端之后,就可以将项目根据业务模块拆分成几个小的模块,每个模块都由不同的团队去维护,单独开发,单独部署上线,这样团队直接就能实现自治,减少甚至不会出现和其他团队冲突的情况。

2,老项目兼容: 如果公司中有故事中存在的古老的jquery或者其他巨石项目的话,但是又不想用旧的技术栈去维护,选择使用微前谎的方式去拆分项目是---个很好的选择。

3,**跨技术栈:**如果我们的微前端系统中需要新增一个业务模块时,只需要单独的新建一个项目,至于项目采用什么技术栈,完全可以由团队自己去定义,即使和其他模块用的不同的技术栈也不会有任何的问题

3,现有的微前端方案

ifrmae

iframe大家都很熟悉,通过iframe实现的话就是每个子应用通过iframe标签来嵌入到父应用中
iframe具有天然的隔离属性,各个子应用之间以及子应用和父应用之间都可以做到互不影响。
但是iframe也有很多缺点︰

1,url不同步,如果刷新页面,iframe中的页面的路由会丢失;

2,全局上下方完全隔离,内存变量不共享;

3,UI不同步,比如iframe中的页面如果有带遮罩的弹窗组件,则遮罩就不能覆盖整个浏览器。只能在iframe中生效;

4,很慢。每次子应用进入都是一次浏览吕上下文重建,资源重新加载的过程;

single-spa

single-spa是最早期的微前端框架,可以兼容很多技术栈。

single-spa首先在基座中注册所有子应用的路由,前URL进行改变时就会去进行匹配,匹配到那个子应用就会去加载对应的那个子应用。

相对于iframe的实现方案,single-spa中基座和各个子应用之间共享着一个全局上下文,并且不存在URL不同步和UI不同步的情况,但是single-spa也有以下缺点;

1,没有实现js和css的隔离;

2,需要修改大量的配置,包括基座和子应用的,不能开箱即用;

quiankun

qiankun是阿里开源的一个微前端框架,在阿里内部已经通过一批线上应用的充分检验及打磨了,可以放心使用。qiankun有什么优势呢?

1,基于single-spa封装的,提供了更加开箱即用的API

2,技术栈无关,任意技术栈的应用均可使用/接入,不论是React/Vue/AngularlJQuery还是其他等框架。

3,HTML Entry的方式接入,像使用iframe一样简单

4,实现了single-spa不具备的样式隔离和js隔离

5,资源预加载,在浏览器空闲时间预加载未打开的微应用资源,加速微应用打开速度。

4,微前端端的好处

团队自治,技术灵活,独立开发部署,兼容性好,业务颗粒化

相关推荐
JIngJaneIL15 分钟前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
敲敲了个代码22 分钟前
隐式类型转换:哈基米 == 猫 ? true :false
开发语言·前端·javascript·学习·面试·web
澄江静如练_32 分钟前
列表渲染(v-for)
前端·javascript·vue.js
JustHappy1 小时前
「chrome extensions🛠️」我写了一个超级简单的浏览器插件Vue开发模板
前端·javascript·github
Loo国昌1 小时前
Vue 3 前端工程化:架构、核心原理与生产实践
前端·vue.js·架构
sg_knight1 小时前
拥抱未来:ECMAScript Modules (ESM) 深度解析
开发语言·前端·javascript·vue·ecmascript·web·esm
LYFlied1 小时前
【每日算法】LeetCode 17. 电话号码的字母组合
前端·算法·leetcode·面试·职场和发展
开发者小天1 小时前
react中useEffect的用法,以及订阅模式的原理
前端·react.js·前端框架
前端白袍1 小时前
Vue:如何实现一个具有复制功能的文字按钮?
前端·javascript·vue.js