1# app.js
2
3## 应用生命周期<sup>4+</sup>
4
5每个应用可以在app.js自定义应用级生命周期的实现逻辑,包括:
6
7
8- onCreate:在应用生成时被调用的生命周期函数。
9
10- onDestroy:在应用销毁时被调用的生命周期函数。
11
12
13以下示例仅在生命周期函数中打印对应日志:
14
15
16
17```js
18// app.js
19export default {
20  onCreate() {
21    console.info('Application onCreate');
22  },
23  onDestroy() {
24    console.info('Application onDestroy');
25  },
26}
27```
28
29## 应用对象<sup>10+</sup>
30
31| 属性     | 类型       | 描述                                       |
32| ------ | -------- | ---------------------------------------- |
33| getApp | Function | 提供getApp()全局方法,可以在页面js文件中获取app.js中暴露的数据对象。 |
34
35> **说明**:
36>
37> 应用对象是全局数据,其在整个应用消亡之前都会一直占用JS内存。尽管应用对象可为不同页面共享数据提供便利,但因为小型设备本身内存比较小,也应谨慎使用。如果过度使用,则容易造成应用在进入复杂page页面时,内存不够而出现异常。
38
39示例如下:
40
41app.js 中声明应用对象:
42
43```javascript
44// app.js
45export default {
46    data: {
47        test: "by getAPP"
48    },
49    onCreate() {
50        console.info('Application onCreate');
51    },
52    onDestroy() {
53        console.info('Application onDestroy');
54    },
55};
56```
57
58在具体的页面中访问应用对象:
59
60```javascript
61// index.js
62export default {
63    data: {
64        title: ""
65    },
66    onInit() {
67        if (typeof getApp !== 'undefined') {
68            var appData = getApp().data;
69            if (typeof appData !== 'undefined') {
70                this.title = appData.name; // read from app data
71            }
72        }
73    },
74    clickHandler() {
75        if (typeof getApp !== 'undefined') {
76            var appData = getApp().data;
77            if (typeof appData !== 'undefined') {
78                appData.name = this.title; // write to app data
79            }
80        }
81    }
82}
83```
84
85> **说明**:
86>
87> 为了应用可在不支持getApp的低版本上正常运行,代码中应进行兼容性处理,即在使用getApp前先判断其是否可用。