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

微服务qiankun通信方式

qiankun:

       是一种类似于微服务的架构,是将一个大型应用拆分成若干个更小、更简单,可以独立开发、测试和部署的子应用,然后由一个基座应用根据路由进行应用切换,主要是为了解决大型工程在变更、维护、扩展等方面的困难而提出的!

qiankun的五种通信方式

1、localStorage/sessionStorage
2、通过路由参数共享
3、官方提供的 props
4、官方提供的 actions
5、使用vuex或redux管理状态通过shared分享

1、localStorage/sessionStorage

不用区分域名,在 qiankun 中应用使用不同的域名也是可以获取得到,主要运行在主应用上所以还是运行在同一个域名上也就是主应用的域名。

父应用

localStorage.setItem('token', '我是保存在本地的数据')

 子应用 获取数据

const token = localStorage.getItem('token')

2、通过路由参数共享

url 上拼接一些参数,父子应用都可以通过 route 来获取到

const router = new VueRouter({ ... })
 
router.beforeEach((to, from, next) => {
    // 路由参数获取
})

3、官方提供的 props

父应用把父路由的实例传递给子应用 props 接收

4、官方提供的 actions

返回action 实例并挂载了三个函数

1、onGlobalStateChange:在当前应用监听全局状态有变更触发 

2、setGlobalState: 可以在应用中任何地方调用来修改全局状态

3、offGlobalStateChange:移除当前应用的状态监听微应用 umount 时会默认调用

具体示例:

actions.ts文件import { initGlobalState, MicroAppStateActions } from 'qiankun';const state = {cont:''
};// 初始化 state
const actions: MicroAppStateActions = initGlobalState(state);actions.onGlobalStateChange((state, prev) => {// state: 变更后的状态; prev 变更前的状态
});// 定义一个获取state的方法下发到子应用
actions.getGlobalState = function () {return state
}export default actions;

父应用

import actions from './actions'
const apps = [{props: {parentActions: actions}}
];

子应用 

// 在子应用中使用就可以访问到这个parentActions了
this.$root.parentActions.setGlobalState({ cont: '我是父应用传下来的数据' })// 调用挂载在 actions 上的自定义方法获取当前的全局 state
this.$root.parentActions.getGlobalState()

5、shared 方案 

父应用通过 vuex 或者 redux 维护一个 state然后创建一个 shared ,和 actions 类似 

主应用 // shared.tsimport store from "./store";class Shared {/*** 获取 Token*/public getToken(){return store.getState() || "";}/*** 设置 Token*/public setToken(token){store.dispatch({type: "SET_TOKEN",payload: token});}
}const shared = new Shared();export default shared;

 子应用  

import shared from './shared';// 获取Token
shared.getToken(); 

相关文章:

微服务qiankun通信方式

qiankun: 是一种类似于微服务的架构,是将一个大型应用拆分成若干个更小、更简单,可以独立开发、测试和部署的子应用,然后由一个基座应用根据路由进行应用切换,主要是为了解决大型工程在变更、维护、扩展等方面的困难而…...

【Azure 架构师学习笔记】-Azure Storage Account(7)- 权限控制

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Storage Account】系列。 接上文 【Azure 架构师学习笔记】-Azure Storage Account(6)- File Layer 前言 存储帐户作为其中一个数据终端存储,对安全性的要求非常高,不管…...

听GPT 讲Rust源代码--src/tools(2)

题图来自AI生成 File: rust/src/tools/rust-installer/src/util.rs 在Rust源代码中,rust/src/tools/rust-installer/src/util.rs文件是安装程序的一个辅助文件,它提供了一些实用函数和结构体来处理安装过程中需要的一些操作。 这个文件中定义了几个结构体…...

【python学习】基础篇-常用模块-collections模块:数据结构,如列表、元组、字典和集合等

Python中的collections模块提供了一些有用的数据结构,如列表、元组、字典和集合等。 以下是collections模块中一些常用数据结构的用法: Counter类 Counter类是一个字典子类,用于计数可哈希对象。 它可以接受一个可迭代对象作为参数&#xff…...

【电路笔记】-电源电压

电源电压 文章目录 电源电压1、概述1.1 交流发电机1.2 电池1.3 理想电压源1.4 实际电压源1.5 连接规则 2、相关源2.1 压控电压源 (VCVS)2.2 电流控制电压源 (CCVS) 3、总结 在本文中,我们详细介绍了称为电源电压的重要电子元件的架构、功能和使用。 我们首先提出理想…...

kali部署ARL灯塔资产系统及使用教程

网上有很多ARL部署到centos系统的教程,但是部署到ubuntu或kali linux系统的教程都是乱七八糟,互相抄,而且没有一个能部署成功,鉴于此,写下此教程,帮助大家出坑 一、安装docker环境(网上什么弄钥匙呀,什么稳定源啊都是垃圾) 准备一个纯净的最新的kali linux系统 1、配…...

一、用户管理

一、后端数据库初始化 1.1 因为版本问题,始终报错,按照报错信息去查询解决方案,无法解决 灵机一动: 网址: Spring Boot 3.0 升级 实战踩坑记录 - 掘金 (juejin.cn) 1.2 个人配置【运行成功…...

Could not publish to the server. java.lang.NullPointerException

publishing to tomcat v8.0 server at localhost has encontered a problem. Could not publish to the server. java.lang.NullPointerException 解决办法: 关闭eclipse在自己设置的workspace目录下面,打开目录:.metadata.plugins\org.ecl…...

SpringMVC(三)

十、拦截器 1、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&#xff1a; <bean class"com.atguigu.interceptor.FirstInterceptor">…...

打印菱形-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第9讲。 打印菱形&#xff…...

『亚马逊云科技产品测评』活动征文|搭建Squoosh图片在线压缩工具

搭建Squoosh图片在线压缩工具 前言一、Squoosh是什么&#xff1f;二、准备一台Lightsail实例1.进入控制台2.创建实例3.开放端口4.部署Squoosh5.预览 三、搭建反向代理1. 安装宝塔2. 配置反向代理3. 预览代理效果 提示&#xff1a;授权声明&#xff1a;本篇文章授权活动官方亚马…...

基于亚马逊云科技大语言模型等服务打造企业知识库

背景 大语言模型是自然语言处理领域的一项重要技术&#xff0c;能够通过学习大量的文本数据&#xff0c;生成具有语法和意义的自然语言文本。目前大语言模型已经成为了自然语言处理领域的一个热门话题&#xff0c;引起了广泛的关注和研究。 知识库需求在各行各业中普遍存在&a…...

FFmpeg 使用

添加关键帧 被压缩过的视频丢失关键帧导致seekTo无效&#xff0c;需要给视频添加关键帧 ffmpeg -i 2.mp4 -c:v libx264 -x264opts keyint5 -y keyint10.mp4修改分辨率 -i /sdcard/bankinfo/-484870439.mp4 -vf scale1920:1080 -threads 5 -preset ultrafast -y /sdcard/ban…...

NLP的使用

参考&#xff1a; Apache openNLP 简介 - 链滴 (ld246.com) opennlp 模型下载地址&#xff1a;Index of /apache/opennlp/models/ud-models-1.0/ (tencent.com) OpenNLP是一个流行的开源自然语言处理工具包&#xff0c;它提供了一系列的NLP模型和算法。然而&#xff0c;Open…...

Navicat DML 操作

在表格种插入 列信息 -- 修改数据 update 表名 set 列名 值1, 列名值2,[where 条件]; -- 注意&#xff1a;如果update语句没有加where 表里对应行的全部信息都会被改; -- 删除数据 delecte from 表名 [where 条件]; 未删除前&#xff1a; 执行删除后为&#xff1a; DQL - 条…...

Springboot-热部署-IDEA2023

方式一&#xff1a;jrebel 方式二&#xff1a; 1、导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <…...

人工智能和AR/VR:AI在AR和VR中扮演什么角色?行业应用有哪些?

增强现实技术和虚拟现实技术&#xff08;AR/VR&#xff09;发展前景广阔&#xff0c;备受各大企业关注。事实上&#xff0c;近四分之三的行业领导者表示&#xff0c;他们预计这些沉浸式技术将于未来五年内成为主流。高盛公司报告称&#xff0c;到2025年&#xff0c;AR/VR行业值…...

Linux进程通信之共享内存

文章目录 共享内存原理申请共享内存函数&#xff08;shmget&#xff09;参数key生成key值示例申请共享内存 挂接到进程地址空间函数(shmat)去关联函数(shmdt)控制共享内存(shmctl)IPC_STATIPC_RMID ipcs其余进程获取该共享内存进程间通信 进程间通信&#xff1a;IPC&#xff0c…...

接口自动化测试:pytest基础讲解

为什么要做接⼝测试&#xff1f; 只靠前端测试很难确保很⾼的覆盖率。接⼝测试&#xff0c;可以模拟出各种类型的⼊参&#xff0c;包括⼀些在前端模拟不出来的⼊参&#xff0c;还能根据接⼝⽂档的定义&#xff0c;设计出相对完善的⼊参值&#xff0c;在接⼝层保证质量&#xf…...

基于JavaWeb+SpringBoot+Vue医院管理系统小程序的设计和实现

基于JavaWebSpringBootVue医院管理系统小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计思想 1 2相关技术 2 2.1微信小程序 2 2.2 …...

Hashcat提速指南:利用规则文件、GPU调优与分布式破解,让你的密码破解效率翻倍

Hashcat性能优化实战&#xff1a;从规则引擎到分布式计算的进阶指南 在渗透测试和密码恢复领域&#xff0c;效率往往决定着成败。当面对海量哈希值时&#xff0c;传统暴力破解方法如同用勺子舀干大海&#xff0c;而掌握Hashcat的高级技巧则像拥有了现代化抽水设备。本文将揭示如…...

从原子团簇到你的代码:一文读懂Python盆地跳跃(basinhopping)算法原理与避坑指南

从原子团簇到你的代码&#xff1a;一文读懂Python盆地跳跃(basinhopping)算法原理与避坑指南 想象你是一位在崎岖山地中寻找最低点的探险家。眼前的地形复杂多变&#xff0c;有无数个山谷和洼地&#xff0c;而你的目标是在有限的体力和时间内找到最深的那一处。这正是Python中…...

别再为QWidget背景图不显示头疼了!一个QFrame容器轻松搞定(附Qt Designer布局技巧)

用QFrame容器优雅解决Qt界面背景图显示难题 在Qt界面开发中&#xff0c;为QWidget设置背景图或颜色是一个看似简单却常让开发者踩坑的需求。许多开发者都遇到过这样的困惑&#xff1a;明明在Qt Designer中预览时背景显示正常&#xff0c;但实际运行时却神秘消失。本文将介绍一种…...

Blender 3MF插件:打通3D打印工作流的格式转换利器

Blender 3MF插件&#xff1a;打通3D打印工作流的格式转换利器 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否在Blender中精心设计的3D模型&#xff0c;在导出到3D…...

BetterJoy终极指南:让Switch手柄在PC上完美工作的免费解决方案

BetterJoy终极指南&#xff1a;让Switch手柄在PC上完美工作的免费解决方案 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitc…...

终极指南:3分钟学会用ncmdumpGUI解密网易云音乐NCM格式文件

终极指南&#xff1a;3分钟学会用ncmdumpGUI解密网易云音乐NCM格式文件 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐的NCM加密格式文件无法…...

新手必看:Qwen3语义雷达,从部署到实战,完整语义搜索体验

新手必看&#xff1a;Qwen3语义雷达&#xff0c;从部署到实战&#xff0c;完整语义搜索体验 1. 引言&#xff1a;为什么需要语义搜索&#xff1f; 想象一下&#xff0c;你在一个庞大的文档库中搜索"如何解决电脑卡顿"&#xff0c;传统的关键词搜索可能只会返回包含…...

WideSearch:从广度优先搜索到智能广义搜索的架构与实践

1. 项目概述&#xff1a;从“宽搜”到“广搜”的智能进化最近在开源社区里&#xff0c;一个名为“WideSearch”的项目引起了我的注意。它来自ByteDance-Seed&#xff0c;这个名字本身就自带光环&#xff0c;让人联想到背后可能蕴藏的工程实践与前沿探索。乍一看标题&#xff0c…...

时间序列预测:滑动窗口技术与监督学习转换实战

1. 时间序列预测的核心挑战时间序列数据与传统的监督学习数据集有着本质区别。传统监督学习中&#xff0c;每个样本都是独立同分布的&#xff0c;而时间序列数据点之间存在严格的时间依赖关系。这种特性使得我们不能直接套用常规的机器学习方法。我曾在金融风控项目中处理过大量…...

Parlant对话控制层:构建可靠AI智能体的动态上下文工程实践

1. 项目概述&#xff1a;为什么我们需要一个“对话控制层”&#xff1f;如果你正在构建面向真实客户的AI智能体——无论是客服、销售顾问、产品导购还是金融顾问——你很可能已经踩过这两个坑&#xff1a;要么是系统提示词&#xff08;System Prompt&#xff09;写得太长&#…...