微前端调研

2023-08-27  本文已影响0人  小任务大梦想

一、背景

为了解决单体应用在一个相对长的时间跨度下,由于参与的人员、团队的增多、变迁,从一个普通应用演变成一个巨石应用(Frontend Monolith)后,随之而来的应用不可维护的问题。使使用不同技术栈的应用之间没有任何直接或间接的技术栈、依赖、以及实现上的耦合而调研微前端的技术框架。

二、什么是微前端

微前端的概念是由ThoughtWorks在2016年提出的,它借鉴了微服务的架构理念,核心在于将一个庞大的前端应用拆分成多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用融合为一个完整的应用,或者将原本运行已久、没有关联的几个应用融合为一个应用。微前端既可以将多个项目融合为一,又可以减少项目之间的耦合,提升项目扩展性,相比一整块的前端仓库,微前端架构下的前端仓库倾向于更小更灵活。

它主要解决两个问题:
1、随着项目迭代应用越来越庞大,难以维护。
2、跨团队或跨部门协作开发项目导致效率低下的问题。

image.png

前端微服务化,是微服务架构在前端的实施,每个前端应用都是完全独立(技术栈、开发、部署、构建独立)、自主运行的,最后通过模块化的方式组合出完成的应用。

采用这种方式意味着,一个页面上可以同时存在两个以上的前端应用在运行。


image.png
image.png

微前端的核心价值:

在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略。

三、微前端框架选型

iframe框架

iframe框架优点

iframe框架缺点

使用iframe框架只适合做简单的页面渲染。无法解决的问题会给产品带来非常严重的体验问题。

single-spa 框架

single-spa是一个用于前端微服务化的JavaScript前端解决方案, 也是最早的微前端整合方案。

single-spa的原理简单的说就是,single-spa将子应用也看做一个spa的页面。主应用通过路由匹配的方式,加载并显示不同的子应用资源,子应用会经过下载(loaded)、初始化(initialized)、被挂载(mounted)、卸载(unmounted)和unloaded(被移除)等过程。single-spa会通过“生命周期”为这些过程提供钩子函数。

single-spa 的主要实现思路为:

缺点:

QianKun

是一款由蚂蚁金服推出的比较成熟的微前端框架,基于 single-spa 的微前端实现库,用于将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。采用MIT开源协议。

特性:

qiankun微前端架构则进一步对single-spa进行完善,主要的完善点:

优点:

缺点:

MicroApp

MicroApp借鉴了WebComponent的思想,通过CustomElement结合自定义的ShadowDom,将微前端封装成一个类WebComponent组件,从而实现微前端的组件化渲染。采用MIT开源协议。

概念图

MicroApp优势:

以上框架可以任意组合,换句话说任何一个框架都可以作为基座嵌入其它类型的子应用,任何一个框架也可以作为子应用被其它框架嵌入,包括上面没有列举出的其它库,如 svelte、umi ...

缺点:

兼容性对比图

无界

无界微前端是一款基于 Web Components + iframe 微前端框架。采用MIT开源协议。

优点:

无需注册,更无需路由适配,在组件内使用,跟随组件装载、卸载。无界提供基于 vue 封装的 wujie-vue 和基于 react 封装的 wujie-react,用户可以当初普通组件一样加载子应用

总结

无界微前端采用 webcomponent + iframe 的来加载子应用,具有成本低、速度快、原生隔离、功能强大等一系列优点,在满足用户核心诉求的同时让使用微前端的体验就像使用普通组件一样简单,极大的降低了使用门槛。且已经开源。但使用人数不是很多。相比来说,乾坤使用的人数以及活跃度最高。
腾讯无界:https://github.com/Tencent/wujie
阿里乾坤:https://github.com/umijs/qiankun
京东MicroApp:https://github.com/micro-zoe/micro-app

总结不好的地方请批评指正,谢谢😄

上一篇 下一篇

猜你喜欢

热点阅读