当前位置: 首页 > article >正文

微前端qiankun示例 Umi3.5

主应用配置(基座)

  1. 安装包
    npm i @umijs/plugin-qiankun -D
    配置 qiankun 开启
{
  "private": true,
  "scripts": {
    "start": "umi dev",
    "build": "umi build",
    "postinstall": "umi generate tmp",
    "prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,md,json}'",
    "test": "umi-test",
    "test:coverage": "umi-test --coverage"
  },
  "gitHooks": {
    "pre-commit": "lint-staged"
  },
  "lint-staged": {
    "*.{js,jsx,less,md,json}": [
      "prettier --write"
    ],
    "*.ts?(x)": [
      "prettier --parser=typescript --write"
    ]
  },
  "dependencies": {
    "@ant-design/pro-layout": "^6.5.0",
    "react": "17.x",
    "react-dom": "17.x",
    "umi": "^3.5.41"
  },
  "devDependencies": {
    "@types/react": "^17.0.0",
    "@types/react-dom": "^17.0.0",
    "@umijs/plugin-qiankun": "^2.43.3",
    "@umijs/preset-react": "1.x",
    "@umijs/test": "^3.5.41",
    "lint-staged": "^10.0.7",
    "prettier": "^2.2.0",
    "typescript": "^4.1.2",
    "yorkie": "^2.0.0"
  }
}

  1. 注册子应用
    插件构建期配置子应用
export default {
  qiankun: {
    master: {
      // 注册子应用信息
      apps: [
        {
          name: 'app1', // 唯一 id
          entry: '//localhost:7001', // html entry
        },
        {
          name: 'app2', // 唯一 id
          entry: '//localhost:7002', // html entry
        },
      ],
    },
  },
};
  1. 装载子应用
    使用路由绑定的方式
export default {
	routes: [
    {
      path: '/',
      component: '../layouts/index.js',
      routes: [
        {
          path: '/app1',
          component: './app1/index.js',
          routes: [
            {
              path: '/app1/user',
              component: './app1/user/index.js',
            },
+            // 配置微应用 app1 关联的路由
+            {
+              path: '/app1/project',
+              microApp: 'app1',
+            },
          ],
        },
+       // 配置 app2 关联的路由
+       {
+         path: '/app2',
+         microApp: 'app2'
+       },
        {
          path: '/',
          component: './index.js',
        },
      ],
    },
  ],
}
  1. 主应用.umirc.ts整体配置:
import { defineConfig } from 'umi';

export default defineConfig({
  nodeModulesTransform: {
    type: 'none',
  },
  routes: [
    { path: '/', redirect: '/micro' },
    {
      path: '/micro',
      component: '@/pages/index',
      routes: [
        {
          path: '/micro/app1',
          microApp: 'app1',
        },
      ],
    },
    {
      path: '/home',
      component: '@/pages/Home',
    },
  ],
  fastRefresh: {},
  qiankun: {
    master: {
      // 注册子应用信息
      apps: [
        {
          name: 'app1', // 唯一 id
          entry: '//localhost:8002/micro/*', // html entry
        },
      ],
    },
  },
});

子应用配置

  1. 安装包
    npm i @umijs/plugin-qiankun -D
    配置 qiankun 开启
  2. 插件注册(config.js)
export default {
  qiankun: {
    slave: {},
  },
};
  1. 配置运行时生命周期钩子(可选)
    插件会自动为你创建好 qiankun 子应用需要的生命周期钩子,但是如果你想在生命周期期间加一些自定义逻辑,可以在子应用的 src/app.ts 里导出 qiankun 对象,并实现每一个生命周期钩子,其中钩子函数的入参 props 由主应用自动注入。
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);
  },
};

http://www.kler.cn/a/154256.html

相关文章:

  • 无人机场景 - 目标检测数据集 - 车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • 【分布式】万字图文解析——深入七大分布式事务解决方案
  • 动态规划之股票系列
  • vuex和pinia的区别
  • 鸿蒙中如何实现图片拉伸效果
  • 算法沉淀一:双指针
  • matlab 汽车单车模型固定点跟踪算法
  • io基础入门
  • CPU 使用率和负载Load
  • golang Pool实战与底层实现
  • k8s(三): 基本概念-ReplicaSet与Deployment
  • TA-Lib学习研究笔记——Price Transform (五)
  • 阿里千问Qwen-72 b在中文测试中击败了GPT-3.5
  • 【Matlab】如何快速入门一项新技能-以Matlab/Simulink入门为例
  • C语言中的格式化输出符号:%d %c %p %x等
  • 750mA Linear Charger with Power Path Management
  • Windows安装Mysql Workbench及常用操作
  • vscode一直不能跳转函数定义或者别的定义c_cpp_properties.json、settings.json
  • 七、ZooKeeper选举机制
  • 深入浅出 Golang 中的直接依赖和间接依赖管理
  • Fiddler抓包工具之fiddler设置抓HTTPS的请求证书安装
  • (C++)盛水最多的容器--双指针法
  • Jmeter组件执行顺序与作用域
  • cuda 在 torch神经网络中哪些地方可以用?
  • 使用JSP+Servlet+MySQL实现登录注册功能
  • Linux基础项目开发1:量产工具——UI系统(五)