umi + qiankun 动态注册子应用解决方案

前言

首发于 语雀文档@blueju

<br />本篇文章可以被视为上一篇文章(https://www.yuque.com/blueju/blog/huuie8)的延续,上一篇文章大致讲述了搭建一个简易微前端平台的过程,其中关于子应用注册的配置是通过硬编码的方式,在构建打包前写入的。<br /> <br />但是真实项目中,更需要的是动态注册子应用,比如说我正参与的这个项目。<br /> <br />本篇文章的示例代码是基于上一篇文章示例代码改动的,上一篇文章示例代码对应的 GitHub 地址是:https://github.com/blueju/umi-qiankun/tree/umi-micro-fe-platform<br /> <br />代码修改集中在主应用,子应用不需要修改代码。 <a name="TvUFG"></a>

删除之前直接写死的子应用注册配置

官网文档中缺少该部分配置。 以下代码中,- 代表删除该行。 config/config.ts

1export default defineConfig({ 2 ... 3 qiankun: { 4 master: { 5 - apps: [ 6 - { 7 - name: 'sub-app-1', 8 - entry: '//localhost:8001', 9 - } 10 - ] 11 } 12 } 13})

<a name="eRueJ"></a>

配置Mock

在 mock 文件夹下新建 config.ts,写入以下代码:

1export default { 2 '/api/config': { 3 apps: [ 4 { 5 name: 'sub-app-1', 6 entry: '//localhost:8001', 7 }, 8 ], 9 }, 10};

<a name="E0F4m"></a>

配置运行时动态注册子应用

参考: https://umijs.org/zh-CN/plugins/plugin-qiankun#b-运行时动态配置子应用(srcappts-里开启) 个人认为 Umi 官网中的写法并不是那么好懂。

在 src 文件夹下新建 app.ts,写入以下代码:

1// 从接口中获取子应用配置,export 出的 qiankun 变量是一个 promise 2export const qiankun = fetch('/api/config') 3 .then((res) => { 4 return res.json(); 5 }) 6 .then(({ apps }) => { 7 return Promise.resolve({ 8 // 注册子应用信息 9 apps, 10 // 完整生命周期钩子请看 https://qiankun.umijs.org/zh/api/#registermicroapps-apps-lifecycles 11 lifeCycles: { 12 afterMount: (props) => { 13 console.log(props); 14 }, 15 }, 16 // 支持更多的其他配置,详细看这里 https://qiankun.umijs.org/zh/api/#start-opts 17 }); 18 });

<a name="YN0wh"></a>

效果

image.png <a name="LsJUw"></a>

GitHub

https://github.com/blueju/umi-qiankun/tree/runtime-dynamic-register-sub-app<br />

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

umi +qiankun 主应用动态装载子应用(路由)解决方案

<aname"p1boA"</a前言接上一篇(),上一篇中使用的都是运行时动态注册子应用,子应用路由仍然是写死的、非动态获取。<br/<br/然后真实项目中除了需要动态注册子应用,还很有可能需要动态装载子应用(路由),比如说:不同权限的用户需要给予他们不同的路由。<br/<br/此篇blog的代码是基于上一篇进行改动的,上一篇

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )