微前端qiankun进阶使用:应用间通信

news2025/1/23 19:39:26

微前端qiankun进阶使用:应用间通信(vue-element-admin作为项目模版)

  • master主应用相关目录
  • 主应用->子应用通信:通过props参数传递
    • 主应用下发数据
    • 子应用接收数据
  • 子应用->主应用通信:类似emit触发主应用函数传值
    • 主应用定义需要emit的函数
    • 子应用触发emit函数传递给主应用数据
  • 应用之间通信:`initGlobalState(state)`(类似vuex)
    • API介绍:`initGlobalState(state)`
    • 用法:主应用master中定义
    • 用法:子应用child中接收并修改

master主应用相关目录

├── src 
│ ├── micro                        # 存放微前端所需文件
│   │── actions.js              # 官方通信方案:全局状态数据
│   │── app.js                  # 子应用配置
│   │── childEmit.js            # 子应用触发主应用的函数
│   │── index.js                # 启动文件
│   │── jsLibrary.js            # 公共方法库,用于下发子应用
│   └── uiLibrary.js            # 公共组件库,用于下发子应用
│ ├── store                        
│   │── modules             
│       │── pagers.js            # 应用间通信的数据仓库
│   │── getters.js             
│   │── index.js                # store主文件

store中用pagers.js 文件里存放应用间通信的数据仓库

主应用->子应用通信:通过props参数传递

  • 主应用通过props参数下发数据
  • 子应用在bootstrap和mount生命周期中接收数据

主应用下发数据

micro/app.js中

/**
 * auth:pantt
 * time:2022.06.15
 * des:配置需要下发的子应用及其相关信息
 */
import store from '@/store'

const arr = window.origin.split(':')
const origin = arr[0] + ':' + arr[1]

const ENV = process.env.NODE_ENV
/**
 * 主应用公共资源下发子应用
 */
// 导入主应用ui库
import LibraryUi from './uiLibrary'
// 导入主应用工具类库
import LibraryJs from './jsLibrary'
// 导入主应用需要下发的emit函数
import * as childEmit from './childEmit'

// 注意:必须用方法获取,直接取store为undefined
export function getApps() {
   
  // 配置要下发的数据
  const msg = {
   
    data: store.getters, // 从主应用仓库读出的数据
    components: LibraryUi, // 从主应用读出的组件库
    utils: LibraryJs, // 从主应用读出的工具类库
    emitFnc: childEmit // 从主应用下发emit函数来收集子应用反馈
    // pager, // 从主应用下发应用间通信呼机
  }
  return [
    /**
     * name: 微应用名称 - 具有唯一性
     * entry: 微应用入口 - 通过该地址加载微应用,本地与服服务器配置有区别
     * container: 微应用挂载节点 - 微应用加载完成后将挂载在该节点上
     * activeRule: 微应用触发的路由规则 - 触发路由规则后将加载该微应用
     * props: 主应用下发给子应用传递数据
     */
    {
   
      name: 'netmoni_child1',
      entry:
        origin + (ENV === 'development' ? ':31325' : '/child/netmoni_child1/'),
      container: '#child1_frame',
      activeRule: '/sub/child1',
      props: {
    ...msg } // 下发子应用的信息
    },
  ]
}

store/getters.js

const getters = {
   
  device: state => state.app.device,
  token: state => state.user.token,
  name: state => state.user.name,
  childData: state => state.pagers.childData,
  initialState: state => state.pagers.initialState // qiankun官方通信actions数据
}
export default getters

micro/jsLibrary.js中

/**
 * auth:pantt
 * time:2022.06.15
 * des:公共方法库,用于下发子应用
 */

import request from '@/utils/request'// 统一下发公共的axios封装请求
import * as validate from '@/utils/validate'

const _exports = {
    request, ...validate }

export default _exports

micro/uiLibrary.js中

/**
 * auth:pantt
 * time:2022.06.15
 * des:公共组件库,用于下发子应用
 */

import ZdEmpty from '@/components/Empty/index.vue'

ZdEmpty.install = function (Vue) {
  Vue.component('ZdEmpty', ZdEmpty)
}
const install = function (Vue) {
  Vue.component('ZdEmpty', ZdEmpty)
}

if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

export default {
  install,
  ZdEmpty
}

子应用接收数据

main.js中

/**
 * bootstrap 只会在微

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构(三) 排序/并查集/图

目录 1. 排序 2.并查集 3.图 1.排序: 1.1 概念: 排序就是将数据按照某种规则进行排列, 具有某种顺序. 分为内排序和外排序. 内排序就是: 将数据放在内存中的排序; 外排序是: 数据太多无法在内存中排序的. 1.2 插入排序: 插入排序包含: 直接插入排序和希尔排序. (1) 直接插入…

ECCV 2024,全新激活函数!

激活函数对深度神经网络的成功可太重要了,它可以提升学习复杂关系的能力,减少过拟合,增强模型性能,与它相关的研究一直是重中之重。最近,这方向有了不少新突破。 ECCV 2024上的这篇,提出了一种可训练的高表…

小米Vela操作系统开源:AIoT时代的全新引擎

小米近日正式开源了其物联网嵌入式软件平台——Vela操作系统,并将其命名为OpenVela。这一举动在AIoT(人工智能物联网)领域掀起了不小的波澜,也为开发者们提供了一个强大的AI代码生成器和开发平台。OpenVela项目源代码已托管至GitH…

ComfyUI实现老照片修复——AI修复老照片(ComfyUI-ReActor / ReSwapper)尚待完善

AI修复老照片,试试吧,不一定好~~哈哈 2023年4月曾用过ComfyUI,当时就感慨这个工具和虚幻的蓝图很像,以后肯定是专业人玩的。 2024年我写代码去了,AI做图没太关注,没想到,现在ComfyUI真的变成了工…

YOLOv5训练自己的数据及rknn部署

YOLOv5训练自己的数据及rknn部署 一、下载源码二、准备自己的数据集2.1 标注图像2.2 数据集结构 三、配置YOLOv5训练3.1 修改配置文件3.2 模型选择 四、训练五、测试六、部署6.1 pt转onnx6.2 onnx转rknn 七、常见错误7.1 训练过程中的错误7.1.1 cuda: out of memory7.1.2 train…

C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况

目录 说明 效果 模型 项目 代码 下载 参考 C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况 说明 地址:https://github.com/RapidAI/RapidUnDistort 修正文档扭曲/模糊/阴影等情况,使用onnx模型简单轻量部署&#xff0c…

贪心算法(题1)区间选点

输出 2 #include <iostream> #include<algorithm>using namespace std;const int N 100010 ;int n; struct Range {int l,r;bool operator <(const Range &W)const{return r<W.r;} }range[N];int main() {scanf("%d",&n);for(int i0;i&l…

煤矿场景下安全帽检测数据集VOC+YOLO格式179张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;170 标注数量(xml文件个数)&#xff1a;170 标注数量(txt文件个数)&#xff1a;170 标注…

RTX 5090原型据称有24576个CUDA核心和800 W TDP -两个16针连接器

英伟达今年早些时候发布、将于1月30日上市的GeForce RTX 5090&#xff0c;有望成为最出色的显卡之一。然而&#xff0c;硬件侦探HXL发掘出了一款疑似早期原型产品。不过&#xff0c;考虑到传闻中的规格参数&#xff0c;它很有可能会成为GeForce RTX 5090 Ti或者RTX Titan Black…

哪个控制面板适合您?

如今&#xff0c;VPS云主机的控制面板在网站托管中变得越来越重要。对于网站管理者和普通用户来说&#xff0c;这类控制面板提供了一站式的管理工具&#xff0c;可以在同一个界面中处理所有网站的管理任务&#xff0c;极大地减少了多系统间重复操作的麻烦。 但随着越来越多的公…

Redis - 通用命令

目录 了解Redis客户端set 和 getRedis全局命令keys命令exists命令del命令expire命令ttl命令Redis中key的过期策略type 了解Redis客户端 想要输入Redis命令,必须先进入Redis客户端 使用redis-cli连接本机的命令行客户端 redis-cli如果想连接其他的ip和端口的客户端&#xff0…

重学SpringBoot3-WebClient配置与使用详解

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞??收藏评论 重学SpringBoot3-WebClient配置与使用详解 1. 简介2. 环境准备 2.1 依赖配置 3. WebClient配置 3.1 基础配置3.2 高级配置3.3 retrieve()和exchange()区别 4. 使用示例 4.1 基本请求操…

HTML5 新表单属性详解

HTML5 为 <form> 和 <input> 标签引入了一系列新属性&#xff0c;极大地增强了表单的功能和用户体验。这些新属性不仅简化了开发者的工作&#xff0c;还为用户提供了更友好、更高效的交互方式。本文将详细介绍这些新属性&#xff0c;并结合代码示例帮助大家更好地理…

【专题】为2025制定可付诸实践的IT战略规划报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p39055 在当今瞬息万变的商业环境中&#xff0c;制定有效的 IT 战略规划对于企业的成功与可持续发展至关重要。本报告深入探讨了制定 IT 战略规划的关键活动&#xff0c;旨在为企业和决策者提供全面且实用的指导。 Gartner的《为202…

JAVA实战开源项目:课程作业管理系统(Vue+SpringBoot) 附源码

本文项目编号 T 023 &#xff0c;文末自助获取源码 \color{red}{T023&#xff0c;文末自助获取源码} T023&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

代码随想录算法训练营day32

代码随想录算法训练营 —day32 文章目录 代码随想录算法训练营前言一、动态规划理论基础二、509. 斐波那契数动态规划动态规划优化空间版递归法 三、70. 爬楼梯动态规划动态规划空间优化 746. 使用最小花费爬楼梯动态规划空间优化 总结 前言 今天是算法营的第32天&#xff0c…

设计模式的艺术-开闭原则

原则使用频率图&#xff08;仅供参考&#xff09; 1.如何理解开闭原则 简单来说&#xff0c;开闭原则指的是 “对扩展开放&#xff0c;对修改关闭”。 当软件系统需要增加新的功能时&#xff0c;应该通过扩展现有代码的方式来实现&#xff0c;而不是去修改已有的代码。 例如我…

grafana新增email告警

选择一个面板 比如cpu 新增一个临界点表达式 input选A 就是A的值达到某个临界点 触发告警 我这边IS ABOVE0.15就是cpu大于0.15%就触发报警&#xff0c;这个值怎么填看指标的值显示 这里要设置一下报警条件 这边随便配置下 配置标签和通知&#xff0c;选择你的邮件 看下告警…

C++17 新特性深入解析:constexpr 扩展、if constexpr 和 constexpr lambda

C17 不仅增强了现有特性&#xff0c;还引入了一些全新的编程工具&#xff0c;极大地提升了代码的效率和表达力。在这篇文章中&#xff0c;我们将深入探讨 C17 中与 constexpr 相关的三个重要特性&#xff1a;constexpr 的扩展用法、if constexpr 和 constexpr lambda。这些特性…

ChatGPT 摘要,以 ESS 作为你的私有数据存储

作者&#xff1a;来自 Elastic Ryan_Earle 本教程介绍如何设置 Elasticsearch 网络爬虫&#xff0c;将网站索引到 Elasticsearch 中&#xff0c;然后利用 ChatGPT 使用我们的私人数据来总结对其提出的问题。 Python 脚本的 Github Repo&#xff1a;https://github.com/Gunner…