You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.0 KiB
68 lines
2.0 KiB
/** |
|
* @program: kicc-ui |
|
* @description: 微应用乾坤配置 |
|
* @author: wangxiang4 |
|
* @create: 2023/7/20 |
|
*/ |
|
|
|
import { registerMicroApps, start, runAfterFirstMounted, addGlobalUncaughtErrorHandler, MicroAppStateActions } from 'qiankun'; |
|
import { apps } from './apps'; |
|
import { getSubDefineProps, initGlState } from './state'; |
|
import { GlStateEnum } from '/@/enums/microAppEnum'; |
|
|
|
export let microState: MicroAppStateActions; |
|
|
|
/** 匹配激活微服务路由规则 */ |
|
function listenerRouteActiveRule(routerPath) { |
|
return (location) => location.pathname.endsWith(routerPath); |
|
} |
|
|
|
/** 微应用注册 */ |
|
function registerApps() { |
|
const microApps = apps.map((item) => { |
|
// 主应用传递给微应用的数据 |
|
item.props = getSubDefineProps(); |
|
// 微应用触发的路由规则 |
|
item.activeRule = listenerRouteActiveRule('/' + item.activeRule); |
|
return item; |
|
}); |
|
registerMicroApps(microApps, { |
|
beforeLoad: [ |
|
(loadApp) => Promise.resolve(()=>{ |
|
console.info('before load', loadApp); |
|
}), |
|
], |
|
beforeMount: [ |
|
(mountApp) => Promise.resolve(()=>{ |
|
console.info('before mount', mountApp); |
|
}), |
|
], |
|
afterMount: [ |
|
(mountApp) => Promise.resolve(()=>{ |
|
console.info('before mount', mountApp); |
|
}), |
|
], |
|
afterUnmount: [ |
|
(unloadApp) => Promise.resolve(()=>{ |
|
console.info('after unload', unloadApp); |
|
}), |
|
], |
|
}); |
|
// 首个微应用加载之后的回调函数用于开启一些监控或者埋点脚本进行数据分析 |
|
runAfterFirstMounted(() => console.log('开启监控')); |
|
// 全局的未捕获异常处理器 |
|
addGlobalUncaughtErrorHandler((event) => console.log(event)); |
|
// 初始化全局通信 |
|
microState = initGlState({ |
|
[GlStateEnum.FORM_DESIGN_APP_PROPS_KEY]: {}, |
|
[GlStateEnum.FORM_DESIGN_APP_EMIT_KEY]: {}, |
|
[GlStateEnum.WORKFLOW_DESIGN_APP_PROPS_KEY]: {}, |
|
[GlStateEnum.WORKFLOW_DESIGN_APP_EMIT_KEY]: {}, |
|
}); |
|
// 启动qiankun |
|
start({ |
|
sandbox: { experimentalStyleIsolation: true } |
|
}); |
|
} |
|
|
|
export default registerApps;
|
|
|