qiankun 传统项目配置_前端微服务

本文深入探讨了微前端技术,特别是qiankun框架在传统项目配置中的应用。文章指出,微前端主要解决巨石应用的解构与重组,强调技术栈无关、独立开发和部署。文中详细介绍了各种实现方案,如iframe、Web Components和Single-SPA,并分析了各自的优缺点。此外,还讨论了应用隔离、通信、路由管理和模块化等方面的问题,提供了实际案例和开源项目实践。
摘要由CSDN通过智能技术生成

见内容

解决的问题

常见讨论

观点:微前端的核心价值在于 “技术栈无关”

微前端的公司,基本上都是做 ToB 软件服务的,没有哪家 ToC 公司会有微前端的诉求,因为很少有 ToC 软件活得过 3 年以上的,如何给遗产项目续命,才是我们对微前端最开始的诉求。

微前端首先解决的,是如何解构巨石应用,解构之后还需要再重组,重组的过程中我们就会碰到各种 隔离性、依赖去重、通信、应用编排 等问题。

1

2玉伯:

今天看各 BU 的业务问题,微前端的前提,还是得有主体应用,然后才有微组件或微应用,解决的是可控体系下的前端协同开发问题(含空间分离带来的协作和时间延续带来的升级维护)

「空间分离带来的协作问题」是在一个规模可观的应用的场景下会明显出现的问题,而「时间延续带来的升级维护」几乎是所有年龄超过 3 年的 web 应用都会存在的问题。

能力

我们希望,按照用户和使用场景将多个系统汇总成一个或者几个综合的系统.

将 Web 应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。由此带来的变化是,这些前端应用可以独立运行、独立开发、独立部署。以及,它们应该可以在共享组件的同时进行并行开发——这些组件可以通过 NPM 或者 Git Tag、Git Submodule 来管理。

技术特点:

技术栈无关 主框架不限制接入应用的技术栈,子应用具备完全自主权

独立开发、独立部署 子应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新

独立运行时 每个子应用之间状态隔离,运行时状态不共享

实现方案

将应用内的组件调用变成了更细粒度的应用间组件调用

原有:将路由分发到应用的组件执行

现有:路由来找到对应的应用,再由应用分发到对应的组件上

常见实现方案使用 HTTP 服务器的路由来重定向多个应用

在不同的框架之上设计通讯、加载机制,诸如 Mooa 和 Single-SPA

iFrame。使用 iFrame 及自定义消息传递机制

使用纯 Web Components 构建应用

结合 Web Components 构建

iframe

优点

比较容易实现

缺点

子项目需要改造,需要提供一组不带导航的功能

iframe嵌入的显示区大小不容易控制,存在一定局限性

URL的记录完全无效,页面刷新不能够被记忆,刷新会返回首页

iframe功能之间的跳转是无效的

iframe的样式显示、兼容性等都具有局限性

实现方式

在采用 iframe 的时候,我们需要做这么两件事:

设计管理应用机制

设计应用通讯机制

加载机制。在什么情况下,我们会去加载、卸载这些应用;在这个过程中,采用怎样的动画过渡,让用户看起来更加自然。

通过 iframeEl.contentWindow 去获取 iFrame 元素的 Window 对象是一个更简化的做法。随后,就需要定义一套通讯规范:事件名采用什么格式、什么时候开始监听事件等等。

纯 Web Components 技术构建

同一时刻可展示多个子应用。通常使用 Web Components 方案来做子应用封装,子应用更像是一个业务组件而不是应用。

暂时技术不成熟,兼容性不高

MPA + 路由分发

优点:

框架无关;2.

独立开发、部署、运行;

应用之间 100% 隔离。

缺点:

应用之间的彻底割裂导致复用困难。(比如,每个应用左侧和顶部都带有导航,那么, 当我要把该应用在其他系统中复用时,需要对该子应用的导航做较为复杂的改动) ;

每个独立的 SPA 应用加载时间较长,容易出现白屏,影响用户体验;

后续如果要做同屏多应用,不便于扩展。

基座式 SPA,主从应用设计

主应用捕获全局的路由事件,基于判断当前路由需要加载哪个子应用,然后 load 它。

路由这里有点不同,在类 Single-SPA 方案中,子应用在加载后,一般会由子应用去接管系统路由。而在基座式的方式中,子应用一般会把自己的路由注册到主应用中,并不接管系统路由。子应用更像是主应用的一个“路由模块”。

缺点:

首先基座就决定了它是框架强相关的,哪怕是基座的版本升级迭代,也会非常容易造成子应用 break change。

传统 SPA + 组件化(比如 Web Components) + 私有 npm 源

使用 npm 包的方案缺陷:需要不断地在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值