搭建 umi + qiankun + antd 的微前端平台

关键词:

  • umi
  • qiankun
  • ant design pro
  • 非动态注册子应用
  • 非动态装载子应用(路由)

背景

银行项目,需要一个前端中台,承载各项目组开发的应用,本篇文章是在工作实践后所写,还是具有一定可借鉴性的,至于官网已经有相关内容还专门写这么一篇,还是因为在实践中官网中的部分不完善,导致搭建过程异常坎坷。

搭建主应用工程

主应用一般都是类后管平台,因此我使用 ant-deisng-pro 做主应用,使用以下命令创建:

参考:https://pro.ant.design/index-cn(页面底部)

yarn create umi main-app

ant-design-pro
pro v4
ts
simple
antd@4

搭建子应用工程

使用以下命令创建:

yarn create @umijs/umi-app sub-app-1

主应用

安装qiankun

yarn add qiankun

安装@umijs/plugin-qiankun

yarn add @umijs/plugin-qiankun -D

注册子应用

参考:
https://umijs.org/zh-CN/plugins/plugin-qiankun#a-插件构建期配置子应用

在 config/config.ts 文件中,仿照以下代码进行添加:

子应用的工程名称是:sub-app-1
子应用的端口是:8001

{
  ...
  qiankun: {
    master: {
      apps: [
        {
          name: 'sub-app-1',
          entry: '//localhost:8001',
        },
      ],
    },
  },
}

装载子应用(路由)

现在还差个指向子应用的路由。
在 config/config.ts 文件中,仿照以下代码,在 routes 属性下进行添加:

{
  name: 'sub-app-1',
  icon: 'smile',
  path: '/sub-app-1',
  microApp: 'sub-app-1',
},

示例文件

担心大家不会,此处还提供一个在已经配置好了的 config/config.ts 文件。
config.ts

子应用

安装@umijs/plugin-qiankun

yarn add @umijs/plugin-qiankun -D

注册刚安装的插件

参考:
https://umijs.org/zh-CN/plugins/plugin-qiankun#第一步:插件注册(configjs)

在 .umirc.ts 文件中添加以下代码:

qiankun: {
 slave: {}
}

添加后如下:

import { defineConfig } from 'umi';

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

修改工程名称

打开 package.json 文件,在第一行添加属性 name 及相应属性值。

导出相应生命周期钩子

参考:
https://umijs.org/zh-CN/plugins/plugin-qiankun#第二步:配置运行时生命周期钩子(可选)

在 src/app.ts 中添加以下代码,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);
  },
};

效果

主应用效果

子应用效果

Github源代码

https://github.com/blueju/umi-mirror-docs/tree/umi-micro-fe-platform

结语

以上配置均不是动态注册子应用、动态装载子应用(路由),但现实项目中更多需要的是动态注册子应用、动态装载子应用(路由)。

TODO

  • 写一篇如何动态注册子应用、动态装载子应用(路由)的blog

首发于语雀文档

(0)

相关推荐

  • Web前端是什么?

    web前端,通俗点说也就是网页制作,制作手机端,PC段的各种网页,只要我们上网,就离不开网页,所以它也是我们每天接触的. 以前的网页是静态的,也就是图片加文字组成的网页,但随着网页进入2.0时代,一些 ...

  • 如何设计实现微前端框架-qiankun

    前端技术优选 以下文章来源于前端早早聊 ,作者方涣 本文是第七届微前端,前端早早聊第 42 场,来自蚂蚁金服体验技术部 qiankun 的核心贡献者 - 方涣的分享 - 讲稿简要整理版(完整版含演示请 ...

  • Vue 3.0 来了,我们该做些什么?

    靓仔路过,不要错过想必 Vue3.0 发布这件事,大家都知道了. 我也是从朋友圈的转发得知此事,博客平台.公众号.朋友圈基本都有这么一条新闻,可见 Vue3.0 的被期待程度,因为 React 16 ...

  • 使用create-react-app搭建TypeScript React Ant Design开发环境

    要创建一个支持TypeScript的Create React App项目,可以运行: npx create-react-app my-app --template typescript# oryarn ...

  • yarn的常用命令

    表白:黑白圣堂血天使,天剑鬼刀阿修罗.  讲解对象:/yarn的常用命令 作者:融水公子 rsgz Node.js教程 Node.js教程 http://www.rsgz.top/post/110.h ...

  • 安装node

    windows下面安装node-sass,确实令人头痛,正确姿势如下: node版最高只支持11.15.0 1.npm或yarm指定淘宝镜像 查看镜像 # npm命令 npm config get r ...

  • 《.netCore + Vue框架搭建之旅》前端篇:微前端架构设计(2)

    心之所向,勇往直前! 记录开发过程中的那些小事,给自己加点经验值. 前言 上篇<.netCore + Vue框架搭建之旅>前端篇:微前端架构设计>讲了一下设计的核心思想,这篇主要说一 ...

  • 直播平台搭建,能上线运营的直播平台该如何搭建?

    首先内容产生方就是推流端,现在主流的 IOS.安卓,IOS比较简单,就是那个几个机型,基本大家适配都很好.但是安卓的碎片化是非常严重的,大量的精力都需要做对安卓的适配,而且软编耗电量普遍非常高,手机用 ...

  • 聚焦乡村旅游+,共同构建乡村微旅游平台

    旅游已经成了很多现代家庭生活的重要内容,据资料显示,今年五一假期全国出游人数或将达到2亿,乡村微旅游更是近段时间的热词.以乡村旅游带动乡镇当地产业发展,既能提高乡村经济收入,也能在无形中推进乡村振兴. ...

  • 浙商银行财报关键字:让利小微、平台化增长|十字财经

    文|李意安 8月25日,浙商银行股份有限公司(下称"浙商银行")公布了2020年中期业绩.数据显示,截至2020年6月末,浙商银行总资产达到1.99万亿,较上年末增长10.54%: ...

  • 使用 Node.js 搭建一个 API 网关(助力微服务)

    外部客户端访问微服务架构中的服务时,服务端会对认证和传输有一些常见的要求.API 网关提供共享层来处理服务协议之间的差异,并满足特定客户端(如桌面浏览器.移动设备和老系统)的要求. 微服务和消费者 微 ...

  • 市公安局 创新构建“邑微警”平台打造便民温情高效服务体系

    江门公安"邑微警"微信服务平台是市委.市政府"互联网+政务服务"的重点建设项目,该平台于2017年上线提供服务,在2018年完成二期升级改造.截至2020年12 ...

  • 微前端(Micro Frontend ) 落地实施的一些具体例子

    前文微前端概述(Micro Frontends) 以及相比单体应用,微前端能带来什么好处 简单介绍了微前端的概念,本文来看一个具体的应用例子. 原文地址 想象一个网站,客户可以在其中订购外卖食品.从表 ...

  • 微前端概述(Micro Frontends) 以及相比单体应用,微前端能带来什么好处

    原文地址 好的前端开发很难. 扩展前端开发,让多个团队可以同时开发一个大型复杂的产品就更难了.在本文中,我们将描述将前端单体分解成许多更小.更易于管理的部分的最新趋势,以及这种架构如何提高处理前端代码 ...