| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import { prefetchApps, AppMetadata } from 'qiankun';
- /**
- *微应用apps
- * @name: 微应用名称 - 具有唯一性
- * @entry: 微应用入口.必选 - 通过该地址加载微应用,
- * @container: 微应用挂载节点 - 微应用加载完成后将挂载在该节点上
- * @activeRule: 微应用触发的路由规则 - 触发路由规则后将加载该微应用
- */
- //子应用列表
- const _apps: AppMetadata[] = [];
- for (const key in import.meta.env) {
- if (key === 'VITE_APP_SUB_APP') {
- const appList = JSON.parse(import.meta.env[key].replace(/'/g, '"'));
- appList.forEach((app) => {
- let utlStr;
- if (import.meta.env.PROD) {
- // 多端口请求
- if (VUE_APP_URL.baseUrl.split(':').length > 1) {
- utlStr = VUE_APP_URL.baseUrl.split(':')[1] + app[1];
- } else {
- utlStr = app[1];
- }
- } else {
- utlStr = app[1];
- }
- const obj = {
- name: app[0],
- entry: utlStr,
- container: `#${app[0]}`,
- activeRule: app[0],
- };
- // debugger;
- _apps.push(obj);
- });
- }
- // prefetchApps([..._apps]);
- // 延迟预取子应用资源到浏览器空闲时,避免启动时与首屏关键请求竞争带宽
- const schedulePrefetch = window.requestIdleCallback || ((cb) => setTimeout(cb, 200));
- schedulePrefetch(
- () => {
- prefetchApps([..._apps]);
- },
- { timeout: 3000 } as IdleRequestOptions
- );
- }
- export const apps = _apps;
|