UmiJs 4 分享

130 阅读2分钟

前言

如果你是React技术栈,并且想快速搭建一个管理后台框架。可以考虑考虑umiJs

特点

1、开箱即用 (插件化开启功能实现)

2、企业级框架 (长期依赖稳定。不会突然崩溃)

3、插件集合 (将插件整合进umi插件,方便引入)

介绍一个umiJs微前端案例

单个umi应用比较容易,这里介绍一个用umiJs实现微前端案例。

这里umi实现使用的是micro-app方案,根据路由标识加载对应的微应用。

一、创建项目命令

安装 node (版本要求看具体版本文档) yarn (包管理工具看个人喜好)

创建一个空目录

mkdir myapp && cd myapp

进入目录初始化umi结构

yarn create umi

二、项目结构

主应用(base 基座)

子应用1(游戏实现)

子应用2(数据看板)

image.png

三、父子应用注册

1、父应用配置

在父应用(基座)的配置文件中注册子应用(插件式注册)

name 为子应用的名称,在引入子应用时需要使用到它;

entry 为子应用运行的 HTTP 地址

image.png  

注册子应用以及子应用路由 (路由绑定引入子应用)

microApp 字段,它的值为注册子应用的 name

切换到对应路由后,Umi 将会使用 <MicroApp /> 组件渲染此子应用,并替换原来路由的 component

image.png

 

子应用挂载完回调配置

  image.png

2、子应用配置

子应用配置qiankun插件开启,微前端插件就会自动在项目中创建好 qiankun 子应用所需的生命周期钩子和方法

image.png

提供生命周期钩子

image.png

 

3、通信配置

基于 useModel() 的通信

1、主应用透传数据 (选择基于路由配置方法)

在父应用的 src/app.ts 里导出一个名为 useQiankunStateForSlave() 的函数,该函数的返回值将传递给子应用:。

image.png

2、子应用消费数据

子应用会自动生成一个全局的 Model,其命名空间为 @@qiankunStateFromMaster。通过 useModel() 方法,允许子应用在任意组件中获取并消费父应用透传的数据。

 import { useModel } from 'umi';
export default function Page() {
  const masterProps = useModel('@@qiankunStateFromMaster');
  return <div>{JSON.stringify(masterProps)}</div>;
}

或者可以通过高阶方法 connectMaster() 来获取并消费父应用透传的数据。类似useContext API.

import { connectMaster } from 'umi';
function MyPage(props) {
  return <div>{JSON.stringify(props)}</div>;
}
export default connectMaster(MyPage);

3、直接配置 (不推荐)

image.png

总结

记一次umi功能的实现,有相关问题也可以评论,共同学习。