上篇手把手教你基于微前端qiankun的应用实践(上篇)中我们已经将vue2主应用加载vue3子应用基本跑了起来,接下来本节探究下父子应用之间数据如何通信,以及子应用与子应用间通信的解决方案
在谈到应用通信前,我们必须谈到子应用划分问题,在微前端架构中,子应用并不是一个模块,而是一个独立的应用,我们将子应用按业务划分可以拥有更好的可维护性和解耦性,子应用应该具备独立运行的能力,应用间频繁的通信会增加应用的复杂度和耦合度
因此,非必要情况下理论上我们应该是减少应用中间的交互行为,避免业务错综复杂不利于维护
官方提供的应用间的通信方式 - Actions 通信,这种通信方式比较适合业务划分清晰,能满足绝大多数情况通信需求,qiankun 内部提供了 initGlobalState 方法用于注册 MicroAppStateActions 实例用于通信,该实例有三个方法,分别是:
特别说明,面对未知事物人类总是欣喜又恐惧,如果你了解类似于WebSocket订阅发布交互方式的话,你完全可以用理解WebSocket交互思维去理解qiankun的Actions通信,从而降低学习成本。onGlobalStateChange就是监听,setGlobalState就是设置字段并触发onGlobalStateChange
首先,在主应用中注册一个actions实例并导出。在 main-app 项目中,新建文件 vue2/src/shared/actions.js(存放位置可自定义),代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import { initGlobalState, MicroAppStateActions } from 'qiankun' // import _store from '@/store' // 父应用中使用initGlobalState设置全局状态actions并导出供其他组件使用 const initialState = { //这可以写初始化数据 testData: '测试' } // 初始化 const actions = initGlobalState(initialState) actions.onGlobalStateChange((state, prevState) => { console.log("主应用state变更前:", prevState); console.log("主应用state变更后:", state); // _store.commit("setData", state) // 在store存储相关数据 }) export default actions |
上一篇:手把手教你基于微前端qiankun的应用实践(上篇)
下一篇:基于微前端qiankun的父子应用通信实战(番外篇)
支付宝扫一扫打赏
微信扫一扫打赏
共 0 条评论关于"基于微前端qiankun的父子应用通信实战(下篇)"
最新评论