双Umi项目使用qiankun嵌套步骤

写在前面

官方文档写的简简单单却暗藏玄机,所以从使用者的角度来说感觉有一些会被忽略的点没有被重点突出,所以记录一下我用双Umi项目进行主/子应用的嵌套。我最开始参考的文章是:AntdPro(主)+Umi使用qiankun搭建主/子应用: link. 是可以成功,但是当我使用umi的时候,把子应用放在主应用中一个组件的子路由中激活的时候出现了问题,所以记录一下搭建步骤。

准备

主应用为Umi项目, 子应用为Umi项目。默认各位巨佬已经创建umi项目与安装qiankun插件,此处就不再赘述。写上安装代码好了, 注意:主/子应用都要安装

yarn add @umijs/plugin-qiankun -D

主应用配置

  1. 主应用地址: localhost:8000
  2. 在 .umirc.ts 中:的defineConfig中写:
qiankun: {
    master: {
      apps: [
        {
          name: 'app1', // 子应用的ID,必写
          entry: '//localhost:8001', // 子应用的地址,必写,此处的8001是子应用run起来的访问端口
        },
      ],
    },
},

整体看起来就是这样:
主应用qiankun配置

  1. 在 .umirc.ts 中:的defineConfig中的routes中,写对子应用的激活路由(就是你在主应用中访问哪个路由可以激活到子应用):
routes: [
    {
      path: '/',
      component: '@/pages/index',
      routes: [
        { path: '/micro', component: './Micro', routes:[
          { name: 'app1', path: '/micro/app1', microApp: 'app1' }// 一
        ] },
        { name: 'app1', path: '/app1', microApp: 'app1' },// 二
      ],
    },
],

此处要注意的是,上述代码注释为一的地方是我们开头讲到的,通过主应用的一个组件里的子路由进行对子应用的激活,注意其path字段,要写全,而不是像之前写子路由那样不用写全,qiankun的配置要写全,不然无法访问子应用。
注释为二的是另一个路由访问子应用的配置。

子应用配置

  1. 子应用地址: localhost:8001
  2. 在 .umirc.ts 中:的defineConfig中写:
qiankun: {
    slave: {},
},
  1. 在package.json中写name属性为 app1 因为主应用所注册的子应用唯一id就是app1,要保持一致:
"name": "app1",
  1. 根据官网介绍,生命周期函数在umi项目中的添加为可选项,简化操作,我们就不配置了,如果希望配置,就在子应用的src目录下新建 app.ts并写上:
// 都是console.log,一看就可以不用配置[手动滑稽]
export const qiankun = {
    async bootstrap(props) {
      console.log('app1 bootstrap', props);
    },
    async mount(props) {
      console.log('app1 mount', props);
    },
    async unmount(props) {
      console.log('app1 unmount', props);
    },
};

效果

至此配置完毕,来看看效果

效果一

首先来看一下访问 localhost:8000/app1
/app

效果二

首先来看一下访问 localhost:8000/micro/app1
/micro/app

总结

1.需要说明的是,为了突出配置的重点,没有把主应用的结构写出来,但是根据路由各位巨佬应该明了。
2.继续思考webpack打包后的一些细节和坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值