第一次提交
This commit is contained in:
22
jeecgboot-vue3/src/qiankun/apps.ts
Normal file
22
jeecgboot-vue3/src/qiankun/apps.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
// /**
|
||||
// *微应用apps
|
||||
// * @name: 微应用名称 - 具有唯一性
|
||||
// * @entry: 微应用入口.必选 - 通过该地址加载微应用,
|
||||
// * @container: 微应用挂载节点 - 微应用加载完成后将挂载在该节点上
|
||||
// * @activeRule: 微应用触发的路由规则 - 触发路由规则后将加载该微应用
|
||||
// */
|
||||
// //子应用列表
|
||||
// const _apps: object[] = [];
|
||||
// for (const key in import.meta.env) {
|
||||
// if (key.includes('VITE_APP_SUB_')) {
|
||||
// const name = key.split('VITE_APP_SUB_')[1];
|
||||
// const obj = {
|
||||
// name,
|
||||
// entry: import.meta.env[key],
|
||||
// container: '#content',
|
||||
// activeRule: name,
|
||||
// };
|
||||
// _apps.push(obj);
|
||||
// }
|
||||
// }
|
||||
// export const apps = _apps;
|
||||
73
jeecgboot-vue3/src/qiankun/index.ts
Normal file
73
jeecgboot-vue3/src/qiankun/index.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
// /**
|
||||
// * qiankun配置
|
||||
// */
|
||||
// import { registerMicroApps, setDefaultMountApp, start, runAfterFirstMounted, addGlobalUncaughtErrorHandler } from 'qiankun';
|
||||
// import { apps } from './apps';
|
||||
// import { getProps, initGlState } from './state';
|
||||
//
|
||||
// /**
|
||||
// * 重构apps
|
||||
// */
|
||||
// function filterApps() {
|
||||
// apps.forEach((item) => {
|
||||
// //主应用需要传递给微应用的数据。
|
||||
// item.props = getProps();
|
||||
// //微应用触发的路由规则
|
||||
// // @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();
|
||||
// //启动qiankun
|
||||
// start({});
|
||||
// }
|
||||
//
|
||||
// export default registerApps;
|
||||
12
jeecgboot-vue3/src/qiankun/micro/index.ts
Normal file
12
jeecgboot-vue3/src/qiankun/micro/index.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import {qiankunWindow} from 'vite-plugin-qiankun/dist/helper'
|
||||
|
||||
/**
|
||||
* 【JEECG作为乾坤子应用】【判断当前是否是以乾坤子应用的模式运行】
|
||||
*/
|
||||
export function checkIsQiankunMicro(): boolean {
|
||||
return !!qiankunWindow.__POWERED_BY_QIANKUN__;
|
||||
}
|
||||
|
||||
export function getGlobal() {
|
||||
return (checkIsQiankunMicro() ? qiankunWindow : window) as Window
|
||||
}
|
||||
57
jeecgboot-vue3/src/qiankun/micro/qiankunMicro.ts
Normal file
57
jeecgboot-vue3/src/qiankun/micro/qiankunMicro.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* 【JEECG作为乾坤子应用】
|
||||
*/
|
||||
import type {App} from 'vue';
|
||||
import type {MainAppProps} from "#/main";
|
||||
|
||||
import {destroyStore} from "@/store";
|
||||
import {destroyRouter} from "@/router";
|
||||
import {clearComponent} from "@/components/jeecg/JVxeTable/src/componentMap";
|
||||
|
||||
import {renderWithQiankun} from 'vite-plugin-qiankun/dist/helper';
|
||||
|
||||
/**
|
||||
* 以乾坤子应用模式运行
|
||||
* @param render
|
||||
*/
|
||||
export async function useQiankunMicroApp(render: (props?: MainAppProps) => Promise<App>) {
|
||||
let instance: Nullable<App> = null;
|
||||
|
||||
// 注册乾坤子应用生命周期函数
|
||||
renderWithQiankun({
|
||||
async mount(props) {
|
||||
console.debug('[qiankun-micro] mount - props :', props)
|
||||
instance = await render({
|
||||
container: props.container!,
|
||||
hideSider: props.hideSider,
|
||||
hideHeader: props.hideHeader,
|
||||
hideMultiTabs: props.hideMultiTabs,
|
||||
});
|
||||
},
|
||||
bootstrap() {
|
||||
console.debug('[qiankun-micro] bootstrap');
|
||||
},
|
||||
update(props) {
|
||||
console.debug('[qiankun-micro] update: ', props);
|
||||
},
|
||||
unmount(props) {
|
||||
console.debug('[qiankun-micro] unmount: ', props);
|
||||
|
||||
destroyStore();
|
||||
destroyRouter();
|
||||
|
||||
if (instance) {
|
||||
clearComponent();
|
||||
instance.unmount();
|
||||
instance._container.innerHTML = '';
|
||||
instance = null;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
return instance!
|
||||
}
|
||||
|
||||
export async function autoUseQiankunMicro(fn: Fn) {
|
||||
return useQiankunMicroApp(fn)
|
||||
}
|
||||
38
jeecgboot-vue3/src/qiankun/state.ts
Normal file
38
jeecgboot-vue3/src/qiankun/state.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
// /**
|
||||
// *公共数据
|
||||
// */
|
||||
// import { initGlobalState } from 'qiankun';
|
||||
// import { store } from '/@/store';
|
||||
// import { router } from '/@/router';
|
||||
// import { getToken } from '/@/utils/auth';
|
||||
// //定义传入子应用的数据
|
||||
// export function getProps() {
|
||||
// return {
|
||||
// data: {
|
||||
// publicPath: '/',
|
||||
// token: getToken(),
|
||||
// store,
|
||||
// router,
|
||||
// },
|
||||
// };
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 定义全局状态,并返回通信方法,在主应用使用,微应用通过 props 获取通信方法。
|
||||
// * @param state 主应用穿的公共数据
|
||||
// */
|
||||
// export function initGlState(info = { userName: 'admin' }) {
|
||||
// // 初始化state
|
||||
// const actions = initGlobalState(info);
|
||||
// // 设置新的值
|
||||
// actions.setGlobalState(info);
|
||||
// // 注册 观察者 函数 - 响应 globalState 变化,在 globalState 发生改变时触发该 观察者 函数。
|
||||
// actions.onGlobalStateChange((newState, prev) => {
|
||||
// // state: 变更后的状态; prev 变更前的状态
|
||||
// console.info('newState', newState);
|
||||
// console.info('prev', prev);
|
||||
// for (const key in newState) {
|
||||
// console.info('onGlobalStateChange', key);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
Reference in New Issue
Block a user