umi2升级到umi3,并接入qiankun

本文介绍了如何将umi2项目升级到umi3,并成功接入微前端框架qiankun。过程中需要注意umi3中dva的使用、qiankun插件安装、配置文件变更以及umi3不再需要的钩子函数。同时提到了umi3与qiankun结合后可能遇到的redirect和样式问题。

qiankun 是一个基于 single-spa 的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。具体可看:https://qiankun.umijs.org/zh/guide

umi3可以顺利接入qiankun。但是umi2着实有些麻烦。所以最终我采取升级umi2到umi3再接入。

1. 升级umi2到umi3

npm uninstall -S dva antd
npm uninstall -D umi-plugin-react 
npm install -D umi@3 @umijs/preset-react

// package.json
"engines": {
	"node": ">=10.13.0"
}

// tsconfig.json
"paths": {
	"@/*": ["src/*"],
 	"@@/*": ["src/.umi/*"]
}

2. 如果你的项目里面没有用到dva, 那么src/app.ts 里面的dva就不需要写了,否则会报错dva的报错

3. 安装qiankun的插件:https://github.com/umijs/plugins/tree/master/packages/plugin-qiankun

npm install --save-dev @umijs/plugin-qiankun

4. umi里面的配置.umirc.ts更改:

qiankun: {
    slave: {},
  },

可以查看完整的配置:

import { defineConfig } from 'umi';
const isDev = process.env.NODE_ENV === 'development';
export default defineConfig({
  publicPath: isDev ? '/' : `//XXXXXXX/`,
  nodeModulesTransform: {
    type: 'none',
  },
  antd: {},
  locale: { antd: true },
  title: false,
  routes: [
    {
      path: '/',
      component: '../layouts/index',
      routes: [
        {
            key: '/manage',
            path: '/manage',
            component: './manage',
            name: '标签管理',
        },
        {
            key: '/search',
            path: '/search',
            component: './search',
            name: '用户标签查询',
        },
        {
            path: '/',
            redirect: '/manage',
        },
      ]
    }
  ],
  base: `usertags`, // 应用在父级的激活路由
  hash: true,
  qiankun: {
    slave: {},
  },
  theme: {
    'font-size-base': '13px',
    'font-family': 'PingFangSC-Regular, PingFang SC',
  }
});

5. umi3不需要写钩子函数了。之前不是umi框架的需要写下面这些

export const qiankun = {
  // 应用加载之前
  async bootstrap(props) {
    console.log('app1 bootstrap', props);
  },
  // 应用 render 之前触发
  async mount(props) {
    console.log('app1 mount', props);
  },
  // 应用卸载之后触发
  async unmount(props) {
    console.log('app1 unmount', props);
  },
};

如果是umi3就不需要写这些钩子函数了

6. 由于qiankun会在最外面包一层壳子,导致redirect的路由和样式都会有点问题。

#root-slave {
    height: calc(100vh);
}
routes: [
    {
      path: '/',
      component: '../layouts/index',
        routes: [
          {
              path: '/',
              component: '../pages/index',
              routes: [
                {
                    key: '/manage',
                    path: '/manage',
                    component: './manage',
                    name: '标签管理',
                },
                {
                    key: '/search',
                    path: '/search',
                    component: './search',
                    name: '用户标签查询',
                },
                {
                    path: '/',
                    redirect: '/manage',
                },
              ]
          }
        
      ]
   }
]


//改成如下:
routes: [
    {
      path: '/',
      component: '../layouts/index',
      routes: [
        {
            key: '/manage',
            path: '/manage',
            component: './manage',
            name: '标签管理',
        },
        {
            key: '/search',
            path: '/search',
            component: './search',
            name: '用户标签查询',
        },
        {
            path: '/',
            redirect: '/manage',
        },
      ]
    }
  ],

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值