| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /**
- * qiankun配置
- */
- import { loadMicroApp, start } from 'qiankun';
- import { apps } from './apps';
- import { getProps } from './state';
- const activeApps = {};
- /**
- * 重构apps
- */
- function filterApps() {
- apps.forEach((item) => {
- //主应用需要传递给微应用的数据。
- item['props'] = getProps();
- //微应用触发的路由规则
- // @ts-ignore
- item.activeRule = item.activeRule.startsWith('/') ? item.activeRule : `/${item.activeRule}`;
- });
- return apps;
- }
- const mountMicroApp = (name, isReFresh = false) => {
- const microApps = filterApps();
- const app = microApps.find((item) => item.name === name);
- if (app) {
- const instance = activeApps[app.name];
- if (instance && instance.getStatus() === 'NOT_MOUNTED' && !isReFresh) {
- instance.mount(app);
- } else {
- delete activeApps[app.name];
- activeApps[app.name] = loadMicroApp(app, { autoStart: false, sandbox: { strictStyleIsolation: false } }); // 手动加载子应用'
- }
- }
- };
- // 卸载app的方法
- const unmountMicroApps = async (multipleApp) => {
- if (JSON.stringify(activeApps) !== '{}' && multipleApp.some) {
- for (const key in activeApps) {
- multipleApp.filter(async (name) => {
- if (name.includes(key)) {
- await activeApps[key].unmount();
- }
- });
- }
- }
- };
- export { mountMicroApp, unmountMicroApps, activeApps };
|