Appearance
应用加载状态 - 生命周期

目录
bash
└── src
├── navigations
│ └── reroute.js # 重写路由,启动
├── applications
│ ├── app.helpers.js # 配置相关的生命周期
│ └── app.js
1
2
3
4
5
6
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
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
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
2
3
4
5
6
7
8
9