[搭建教程]手把手从0搭建微前端(umi+qiankun)

1,742 阅读2分钟

开始搭建

该文档适用于从0开始搭建微前端应用,学习微前端的demo

当前配置版本

"@umijs/plugin-qiankun": "^2.18.3",
"umi": "^3.3.3"

一、配置基座应用(主应用)

新建文件夹命名 mainAPP

进入mianApp执行以下命令

yarn create @umijs/umi-app // 使用umi官方工具创建项目
yarn // 安装依赖
yarn add @umijs/plugin-qiankun -D // 安装qiankun插件

注册qiankun,在.umirc.ts书写配置项

/mainApp/.umirc.ts

import { defineConfig } from 'umi';

export default defineConfig({
  nodeModulesTransform: {
    type: 'none',
  },
  routes: [
    { path: '/', component: '@/pages/index' },
		//注册子路由
    {
      name: 'app1',
      path: '/app1',
      microApp: 'app1',//对应上一步注册的name
    }
  ],
  //注册qiankun应用
  qiankun: {
    master: {
      // 注册子应用信息
      apps: [
        {
          name: 'app1', // 唯一 id
          entry: '//localhost:2000', // html entry
        },
      ],
    //   jsSandbox: true, // 是否启用 js 沙箱,默认为 false
    //   prefetch: true, // 是否启用 prefetch 特性,默认为 true
    },
  },
//新增配置项结束
});

也可以新建/mainApp/config/config.ts中配置以上配置,具体分离可参照umi文档umijs.org/zh-CN/docs/…

二、配置子应用

新建文件夹命名 microAPP1

进入microApp执行以下命令

yarn create @umijs/umi-app // 使用umi官方工具创建项目
yarn // 安装依赖
yarn add @umijs/plugin-qiankun -D // 安装qiankun插件

添加qiankun配置项

/microApp1/.umirc.ts

import { defineConfig } from 'umi';

export default defineConfig({
  nodeModulesTransform: {
    type: 'none',
  },
  routes: [
    { path: '/', component: '@/pages/index' },
  ],
  //以下为配置项
  qiankun: {
    slave: {}
  }
});

配置生命钩子(可选)

在/microApp/src下新建文件app.ts,复制以下内容

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);
    },
  };

将package.json中添加name属性

/microApp1/package.json

{
	//以下name为配置项,确保名称与主应用注册的微应用name保持一致
  "name": "app1",
  ...
}

配置端口,与主应用配置的端口保持一致

在microApp1目录下新建.env文件,编写以下内容

PORT=2000

为了标识子应用是否配置成功,遂将写成如下这样

/microApp1/src/page/index.tsx

import React from 'react';
import styles from './index.less';

export default () => {
  return (
    <div>
      <h1 className={styles.title}>子应用1</h1>
    </div>
  );
}

三、启动

运行子应用

进入microApp1执行

yarn start

打开浏览器输入localhost:2000看到

运行主应用

进入mainApp执行

yarn start

打开浏览器

切换子应用,将基座应用地址栏输入localhost:8081/app1,可以看到

说明微应用配置成功

四、相关文档

官方配置文档

umijs.org/zh-CN/plugi…