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

Umi + qiankun 微前端架构

一、主项目中的操作

app.tsx

export { layout, getInitialState, qiankun, useQiankunStateForSlave };

Umi 会自动读取项目根目录下的 src/app.ts 或 src/app.tsx 文件,作为全局运行时配置文件,它里面导出的几个函数是 Umi 框架的生命周期钩子。

导出名称作用
getInitialState用于初始化全局状态(如用户信息),页面加载前运行
layout配置 Layout 布局,常用来配置菜单、页头、权限等
qiankun微前端配置,主/子应用配置入口
useQiankunStateForSlave给 主应用传递给子应用的共享数据,配合 qiankun 使用

以下插件在umi中默认生成,也可以开启其它插件
在这里插入图片描述

2、Umi + qiankun 微前端架构 主应用给子应用传递全局数据 的标准写法。

qiankun.ts
//主应用向子应用透传数据
function useQiankunStateForSlave(): any {const defaultState = {};const { initialState } = useModel('@@initialState');return {APP_NAME,REACT_APP_NATION,access: access(initialState as any),initialState: { ...defaultState, ...initialState },};
}

export default function access(initialState: { currentUser?: CurrentUserData }) {const { currentUser = {} } = initialState || {};// console.log('currentUser', currentUser)//用户idif (currentUser.operator) {localStorage.setItem('id', currentUser.operator.id.toString());}const { authResourceList = [] } = currentUser;return {canAdmin: true,canRead: (authKey: string) => Access.canRead(authResourceList, authKey),routersFilter: (route: RouterItem) => Access.routersFilter(authResourceList || [], route)};
}

二、 其它子项目中获取共享数据:

const { initialState } = useModel(‘@@qiankunStateFromMaster’);
initialState 是 Umi 框架 中 全局初始化状态管理机制,专门用于在应用启动时加载一些“全局共享数据”

比如:当前登录用户信息、权限信息、系统配置、国际化语言、Token 等

三、流程图

在这里插入图片描述

http://www.lqws.cn/news/440929.html

相关文章:

  • Python爬虫(七):PySpider 一个强大的 Python 爬虫框架
  • SQL分片工具类
  • 动态规划:砝码称重(01背包-闫氏DP分析法)
  • 性能优化中的工程化实践:从 Vite 到 Webpack 的最佳配置方案
  • Day05_数据结构总结Z(手写)
  • 386. 字典序排数
  • 解码成都芯谷金融中心:文化科技产业园的产融创新生态密码
  • 2025年八大科技趋势
  • Spring Boot + MyBatis + Vue:构建高效全栈应用的实战指南
  • bos_token; eos_token; pad_token是什么
  • 农村土地经营权二轮延包—一键生成属性数据库MDB
  • 解决docker pull镜像慢的问题
  • 【设计模式】用观察者模式对比事件订阅(相机举例)
  • 【分布式】基于Redisson实现对分布式锁的注解式封装
  • 【JavaEE】(3) 多线程2
  • API网关Apisix介绍
  • MySQL高可用方案解析与选型指南
  • Android图形系统框架解析
  • 【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率
  • AI与大数据如何驱动工业品电商平台的智能决策?
  • mongodb单节点改副本集模式
  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合
  • CppCon 2017 学习:Esoteric Data Structures and Where to Find Them
  • 《汇编语言:基于X86处理器》第2章 复习题
  • infinisynapse 使用清华源有问题的暂时解决方法:换回阿里云源并安装配置PPA
  • flink的多种部署模式
  • YOLOv8改进:Neck篇——2024.1全新MFDS-DETR的HS-FPN特征融合层解析
  • 使用 rsync 拉取文件(从远程服务器同步到本地)
  • Mac 安装ElasticSearch和Kibana详细教程
  • 【面试题002】synchronized和lock的区别