本文小编为大家详细介绍“微前端框架qiankun源码分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“微前端框架qiankun源码分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。要了解qiankun的实现机制,那我们不得不从其底层依赖的single-spa说起。随着微前端的发展,我们看到在这个领域之中出现了各式各样的工具包和框架来帮助我们方便快捷的实现自己的微前端应用。在发展早期,single-spa可以说是独树一帜,为我们提供了一种简便的微前端路由工具,大大降低了实现一个微前端应用的成本。我们来看一下一个典型single-spa微前端应用的架构及代码。主应用(基座):作为整个微前端应用中的项目调度中心,是用户进入该微前端应用时首先加载的部分。在主应用中,通过向single-spa提供的registerApplication
函数传入指定的参数来注册子应用,这些参数包括子应用名称name
、子应用如何加载app
、子应用何时激活activeWhen
、以及需要向子应用中传递的参数customProps
等等。在完成整体注册后调用start
函数启动整个微前端项目。子应用:子应用是实际展示内容的部分,最主要的工作是导出single-spa中所规定的生命周期函数,以便于主应用调度。其中,bootstrap在子应用第一次加载时调用,mount在子应用每次激活时调用,unmount在子应用被移出时调用。此外在这些生命周期函数中我们可以看到props参数被传入,这个参数中包含了子应用注册名称、singleSpa实例、用户自定义参数等信息,方便子应用的使用。可以看到Single-spa作为一个微前端框架领域最为广泛使用的包,其为我们提供了良好的子应用路由机制。但是除此之外,single-spa也留下了很多需要用户自行解决的问题:子应用究竟应该如何加载,从哪里加载?子应用运行时会不会互相影响?主应用与子应用、子应用之间具体可以通过customProps互相通信,但是怎样才能知道customProps发生了变化呢?因此,市面上出现了很多基于single-spa二次封装的微前端框架。他们分别使用不同的方式,基于各自不同的侧重点包装出了更加完善的产品。对于这些产品,我们可以将single-spa在其中的作用类比位理解为react-router之于react项目的作用——single-spa作为一个没有框架、技术栈限制的微前端路由为它们提供了最底层的子应用间路由及生命周期管理的服务。在近几年微前端的发展壮大过程中,早期推出并经久不衰的阿里qiankun框架算的上是一枝独秀了。作为目前微前端领域首屈一指的框架,qiankun无论是从接入的方便程度还是从框架本身提供的易用性来说都是可圈可点的。qiankun基于single-spa进行了二次开发,不但为用户提供了简便的接入方式(包括减少侵入性,易于老项目的改造),还贴心的提供了沙箱隔离以及实现了基于发布订阅模式的应用间通信方式,大大降低了微前端的准入门槛,对于微前端工程化的推动作用是不可忽视的。因为其基于single-spa二次开发, 所以qiankun微前端架构与第一章中所提及的并无二致,下面我们列出一个典型的qiankun应用的代码并类比其与single-spa的代码区别。主应用:这里qiankun将single-spa中的app改为了entry并对其功能进行了增强,用户只需要输入子应用的html入口路径即可,其余加载工作由qiankun内部完成,当然也可以自行列出所需加载的资源。此外加入了container选项,让用户显示指定并感知到子应用所挂载的容器,简化了多个子应用同时激活的场景。子应用:与single-spa基本一致,导出了三个生命周期函数。这里可以看到在mount中我们手动将react应用渲染到了页面上,反之在unmount中我们将其从页面上清除。可以看到,由于其帮助我们完成了子应用的加载工作,所以用户的配置相比于single-spa更为简便了。但是,除了这个明面上的工作,qiankun还在暗处为我们的易用性做出了很多努力,接下来,我们会围绕着以下三个方面来深入剖析qiankun内部源码和相关实现原理:qiankun如何实现用户只需配置一个URL就可以加载相应子应用资源的;qiankun如何帮助用户做到子免费云主机域名应用间独立运行的(包括JS互不影响和CSS互不污染);qiankun如何帮助用户实现更简便高效的应用间通信的;qiankun的子应用注册方式非常简单,用户只需要调用registerMicroApps函数并将所需参数传入即可.前文中我们说到qiankun是基于single-spa二次封装的框架,因此qiankun中的路由监听和子应用生命周期管理实际上都是交给了single-spa来进行实现的。我们一起来看一下该方法的实现方式(部分截取)可以看到,qiankun在子应用加载上所做的工作就是将用户调用registerMicroApps
时所提供的参数经过一系列处转换之后,改造成single-spa中registerApplication
所需要的参数。下面,我们给出qiankun中实现该转换子的主要函数loadApp
的部分实现代码(源代码地址github.com/umijs/qiank…可以看到,qiankun在其加载函数loadApp
中做了一些额外的工作。为了方便使用,qiankun提供了基于url入口来加载子应用的方式。为了获取用户提供的html文件(或者资源文件数组)并解析出其中所需的资源,qiankun依赖了import-html-entry
库中的相关方法,执行并得到了子应用导出的用户自定义生命周期。对用户自定义的生命周期进行增强(包括挂载/卸载应用间的隔离沙箱,初始化或传入应用间通信方法等等),返回框架增强后的生命周期函数数组并注册在single-spa中。经过源码的分析我们可以看出,qiankun在子应用加载上就是作为中间层存在的,其主要作用就是简化用户对于子应用注册的输入,通过框架内部的方法转换并增强了用户的输入最终将其传入了single-spa之中,在后续的执行中真正负责子应用加载卸载的是single-spa。读到这里,这篇“微前端框架qiankun源码分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。
本文小编为大家详细介绍“java通配符怎么用”,内容详细,步骤清晰,细节处免费云主机域名理妥当,希望这篇“java通配符怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、通配符,代表未知类型,代表不关心或无法确定实际操作的类型…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。