/** * qiankun配置 */ import { registerMicroApps, start, runAfterFirstMounted, addGlobalUncaughtErrorHandler, loadMicroApp } from 'qiankun'; import { apps } from './apps'; import { getProps, initGlState } from './state'; import { getToken } from '/@/utils/auth'; /** * 重构apps */ function filterApps() { apps.forEach((item) => { //主应用需要传递给微应用的数据。 item.props = getProps(); console.log('主应用给子应用传的数据', item.props); //微应用触发的路由规则 // @ts-ignore item.activeRule = genActiveRule('/' + item.activeRule); }); return apps; } /** * 路由监听 * @param {*} routerPrefix 前缀 */ function genActiveRule(routerPrefix) { return (location) => location.pathname.startsWith(routerPrefix); } /** * 微应用注册 */ function registerApps() { const _apps = filterApps(); registerMicroApps(_apps, { beforeLoad: [ // @ts-ignore (loadApp) => { console.log('before load', loadApp); }, ], beforeMount: [ // @ts-ignore (mountApp) => { console.log('before mount', mountApp); }, ], afterMount: [ // @ts-ignore (mountApp) => { console.log('before mount', mountApp); }, ], afterUnmount: [ // @ts-ignore (unloadApp) => { console.log('after unload', unloadApp); }, ], }); // 设置默认子应用,与 genActiveRule中的参数保持一致 // setDefaultMountApp(); // 第一个微应用 mount 后需要调用的方法,比如开启一些监控或者埋点脚本。 runAfterFirstMounted(() => console.log('开启监控')); // 添加全局的未捕获异常处理器。 addGlobalUncaughtErrorHandler((event) => console.log(event)); // 定义全局状态 initGlState({ token: getToken() }); //启动qiankun start({ prefetch: 'all', // fetch: async (url: RequestInfo | URL, ...args: any) => { // console.log(url); // }, // sandbox: { // experimentalStyleIsolation: true, // }, sandbox: false, }); // setDefaultMountApp('/micro-vent-3dModal'); } export { registerApps };