前端微服务qiankun 2.x主子应用通信代码片段
主应用代码
主应用工程里面源代码新建qiankun/index.js,通信代码如下:
import { initGlobalState } from "qiankun";
import store from '@/store'
// 主应用与微应用数据通信
const state = {
subappClassName: '' // 设置子应用打包根的class类名
}
const actions = initGlobalState(state);
actions.setGlobalState(state);
actions.onGlobalStateChange((state, prev) => {
const { subappClassName } = state;
store.dispatch('setSubappClassName',subappClassName);
})
export {
actions
};
在主应用实例里面调用方式:
<script>
import actions from '@/qiankun'// 导入actions实例
export default {
created() {
actions.setGlobalState({subappClassName: 'subapp'}); // 通过setGlobalState改变全局状态
}
}
</script>
子应用代码
在子应用源代码utils/qiankun.js添加如下代码:
class Actions {
static empty() {
console.warn('current actions is empty!')
}
actions = {
onGlobalStateChange: Actions.empty,
setGlobalState: Actions.empty
}
/** 初始化设置actions
*
*/
setActions(actions) {
this.actions = actions;
}
onGlobalStateChange(...args) {
return this.actions.onGlobalStateChange(...args);
}
setGlobalState(...args) {
return this.actions.setGlobalState(...args);
}
}
export default new Actions();
在main.js入口文件引入actions实例,并在mount生命周期中导入该实例,代码如下:
import actions from '@/utils/qiankun';
export async function mount(props) {
actions.setActions(props);
actions.setGlobalState({ subappClassName: 'sub-root-app' }); // 可在mount中设置,也可在实例里设置
render(props);
}
在vue路由页面调用:
<script>
import actions from '@/utils/qiankun.js';
export default {
created() {
actions.setGlobalState({subappClassName: 'sub-root-app'});
}
}
</script>
前端微服务qiankun 2.x主子应用通信代码片段的更多相关文章
- 前端微服务-面向web平台级应用的设计
从去年开始,前端领域就出现了一个‘微应用’的名词,说的是前端架构的一种设计思路,业内都把它和后端的微服务进行类比,当时忙于公司的项目.没有静下心来好好了解,现在项目结束,再加上最近看的几篇关于前端微服 ...
- Mosaic 前端微服务框架
Mosaic 是一系列的服务.库,集成在一起,定义了组件如何彼此交互,可以用来支持大规模的web 站点开发 一张架构图 说明 尽管上图中的一些组件已经迭代演化了(skipper 的route 配置,上 ...
- 前端微服务初试(singleSpa)
1.基本概念 实现一套微前端架构,可以把其分成四部分(参考:https://alili.tech/archive/11052bf4/) 加载器:也就是微前端架构的核心,主要用来调度子应用,决定何时展示 ...
- ASP.NET Core微服务+Tabler前端框架搭建个人博客2--系统架构
功能分析 在整个微服务架构的搭建过程中,我们需要做的第一步就是对服务进行拆分,将一个完整的系统模块化,通过对各个模块互联,共同完成一个系统的工作.既然要做到模块化,那么必须明白你的系统的需求到底是什么 ...
- WeText项目:一个基于.NET实现的DDD、CQRS与微服务架构的演示案例
最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架 ...
- Java 微服务框架 Redkale 入门介绍
Redkale 功能 Redkale虽然只有1.xM大小,但是麻雀虽小五脏俱全.既可作为服务器使用,也可当工具包使用.作为独立的工具包提供以下功能:1.convert包提供JSON的序列化和反序列化功 ...
- NET实现的DDD、CQRS与微服务架构
WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例 最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间 ...
- [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。
目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...
- JHipster生成微服务架构的应用栈(三)- 业务微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- 微服务实践(七):从单体式架构迁移到微服务架构 - DockOne.io
原文:微服务实践(七):从单体式架构迁移到微服务架构 - DockOne.io [编者的话]这是用微服务开发应用系列博客的第七篇也是最后一篇.第一篇中介绍了微服务架构模式,并且讨论了微服架构的优缺点: ...
随机推荐
- 使用浏览器的cookies进行登陆
1.使用浏览器Cookie登陆 In [ ]: cookie = 'uniqueVisitorId=a2151df1-4833-00ae-72e0-f4b99d2b7be2; pgv_pvid=232 ...
- 解决方案 | 外接键盘win+d失效,绿联键盘win+d,win+e失效
按下fn + 右边的win键 即可解决.如下图所示.
- ERP中内部批号和外部批号分别指的是什么
在企业资源计划(ERP)系统中,内部批号和外部批号是两个用于标识和跟踪产品的关键概念.它们通常用于管理和追踪生产.库存和供应链中的物料. 内部批号(Internal Batch Number): 定义 ...
- oeasy教您玩转vim - 69 - # 折叠folding入门
折叠入门 回忆上次 上次学习了一种新的容器 tabs选项卡 tabs选项卡 包含多个选项卡tab 可以列两个tab 一个编写文件 一个执行指令 互不影响 每个 tab选项卡 还可以对应多个wind ...
- WRONG(COPY)
去年总结的列表,欢迎大家补充!! 两个int相乘,50%几率会爆了int.(不开long long见祖宗) 无向图邻接表的边表忘了这是心口永远的痛: 线段树数组开小是4(乘4有时候不够) 调用多个函数 ...
- Django 不通过外键实现多表关联查询
Django不通过外键实现多表关联查询 by:授客 QQ:1033553122 测试环境 Win 10 Python 3.5.4 Django-2.0.13.tar.gz 需求 不通过外键,使 ...
- selenium启动Chrome配置参数问题
每次当selenium启动chrome浏览器的时候,chrome浏览器很干净,没有插件.没有收藏.没有历史记录,这是因为selenium在启动chrome时为了保证最快的运行效率,启动了一个裸浏览器, ...
- 【Vue】单元格合并,与动态校验
效果要求 先看需求效果: 多个数据授权项,配置的时候,业务名称大多数都是一样的,需要合并单元格处理 在elementUI组件文档中有说明[合并列行]: https://element.eleme.io ...
- 【SpringMVC】IDEA 不识别webapp的解决办法
参考地址: https://blog.csdn.net/omrleft123/article/details/70237205
- 计算机类的短周期的SCI期刊
<Human-centric Computing and Information Sciences> 韩国人办的,Open Access,周期短,费用高,SCI二区,水毕业可用. 以下引自 ...