Skip to content
On this page

应用加载状态 - 生命周期

目录

bash
└── src
    ├── navigations
    │   └── reroute.js # 重写路由,启动
    ├── applications
    │   ├── app.helpers.js # 配置相关的生命周期
    │   └── app.js
1
2
3
4
5
6

编写生命周期代码

bash
/src/applications/app.helpers.js
1
javascript
export const NOT_LOADED = "NOT_LOADED"; // 没有加载过
export const LOADING_SOURCE_CODE = "LOADING_SOURCE_CODE"; // 加载原代码
export const NOT_BOOTSTRAPPED = "NOT_BOOTSTRAPPED"; // 没有启动
export const BOOTSTRAPPING = "BOOTSTRAPPING"; // 启动中
export const NOT_MOUNTED = "NOT_MOUNTED"; // 没有挂载
export const MOUNTING = "MOUNTING"; // 挂载中
export const MOUNTED = "MOUNTED"; // 挂载完毕
export const UPDATING = "UPDATING"; // 更新中
export const UNMOUNTING = "UNMOUNTING"; // 卸载中
export const UNLOADING = "UNLOADING"; // 没有加载中
export const LOAD_ERROR = "LOAD_ERROR"; // 加载失败
export const SKIP_BECAUSE_BROKEN = "SKIP_BECAUSE_BROKEN"; // 运行出错

// 当前app是否已经挂载
export function isActive(app) {
    return app.status === MOUNTED;
}

//  当前app是否应该激活
export function shouldBeActive(app) {
  // 如果返回 true ,那么应用应该开始初始化等一系列操作
  return app.activeWhen(window.location);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

修改 registerApplication 函数

javascript
import { reroute } from './navigation/reroute' // 当注册应用时reroute的功能是加载子应用

export function registerApplication(appName, loadApp, activeWhen, customProps) {
  apps.push({
    // 这里讲应用注册好了
    name: appName,
    loadApp,
    activeWhen, // 当前状态
    customProps,
    status: NOT_LOADED, // +++ 传入当前状态
  });

  reroute(); // 这个是加载应用
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

start 启动

javascript
import { reroute } from "./navigations/reroute";

export let started = false;

// 当调用start方法时是挂载应用
export function start() {
  started = true;
  reroute(); // 除了去加载应用还需要去挂载应用
}
1
2
3
4
5
6
7
8
9
沪ICP备20006251号-1