---
title: App
summary: "介绍 App() 构造器的参数、生命周期回调及小程序注册方法。"
questions:
  - App() 构造器接受哪些参数？
  - onLaunch 生命周期回调在什么时候触发？
  - onShow 和 onHide 分别在什么场景下被调用？
  - 如何通过 App() 监听小程序的脚本错误？
  - 当小程序打开不存在的页面时如何处理？
  - onThemeChange 回调的触发时机是什么？
  - onEvent 回调的作用是什么，什么时候触发？
---

# App(config: Object)

## 介绍

注册小程序。接受一个 Object 参数，其指定小程序的生命周期回调等。

**`App()` 必须在 `app.js` 中调用，必须调用且只能调用一次。不然会出现无法预期的效果。**

## 参数

| 属性                                            | 类型     | 默认值 | 必填 | 描述                                                                 | 最低版本 |
| ----------------------------------------------- | -------- | ------ | ---- | -------------------------------------------------------------------- | -------- |
| [onLaunch](#onlaunchoptions-object)             | function |        | 否   | 生命周期回调——监听小程序初始化。                                     |
| [onShow](#onshowoptions-object)                 | function |        | 否   | 生命周期回调——监听小程序启动或切前台。                               |
| [onHide](#onhide)                               | function |        | 否   | 生命周期回调——监听小程序切后台。                                     |
| [onError](#onerrorstring-error)                 | function |        | 否   | 错误监听函数。                                                       |
| [onPageNotFound](#onpagenotfoundoptions-object) | function |        | 否   | 页面不存在监听函数。                                                 |
| [onThemeChange](#onthemechangeoptions-object)   | function |        | 否   | 监听系统主题变化                                                     |
| [onEvent](#oneventoptions-object)               | function |        | 否   | 点击看板的时候触发事件                                               |
| 其他                                            | any      |        | 否   | 开发者可以添加任意的函数或数据变量到 Object 参数中，用 this 可以访问 |

## 生命周期

### onLaunch(options: Object)

小程序初始化完成时触发，全局只触发一次。参数也可以使用 [ty.getLaunchOptionsSync](/cn/miniapp/develop/miniapp/api/base/container/getLaunchOptionsSync) 获取。

**参数**：与 [ty.getLaunchOptionsSync](/cn/miniapp/develop/miniapp/api/base/container/getLaunchOptionsSync) 一致

### onShow(options: Object)

小程序启动，或从后台进入前台显示时触发。也可以使用 [ty.onAppShow](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onAppShow) 绑定监听。

**参数**：与 [ty.onAppShow](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onAppShow) 一致

### onHide()

小程序从前台进入后台时触发。也可以使用 [ty.onAppHide](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onAppHide) 绑定监听。

### onError(String error)

小程序发生脚本错误或 API 调用报错时触发。也可以使用 [ty.onError](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onError) 绑定监听。

**参数**：与 [ty.onError](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onError) 一致

### onPageNotFound(options: Object)

小程序要打开的页面不存在时触发。也可以使用 [ty.onPageNotFound](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onPageNotFound) 绑定监听。
参数：与 [ty.onPageNotFound](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onPageNotFound) 一致

示例代码：

```js
App({
  onPageNotFound(res) {
    ty.redirectTo({
      url: '/pages/...',
    }); // 如果是 tabbar 页面，请使用 ty.switchTab
  },
});
```

### onThemeChange(options: Object)

系统切换主题时触发。也可以使用 [ty.onThemeChange](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onThemeChange) 绑定监听。

**参数**：与 [ty.onThemeChange](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onThemeChange) 一致

## 示例代码

```javascript
App({
  onLaunch(options) {
    // Do something initial when launch.
  },
  onShow(options) {
    // Do something when show.
  },
  onHide() {
    // Do something when hide.
  },
  onError(msg) {
    console.log(msg);
  },
  globalData: 'I am global data',
});
```

### onEvent(options: Object)

点击看板的时候触发事件, 参数为 `boardMenus` 中的对象。

**参数**：与 [ty.onAppEvent](/cn/miniapp/develop/miniapp/api/base/applicationLevelEvents/onAppEvent) 一致

## 示例代码

```javascript
App({
  onEvent(option) {
    console.log(option);
  },
  globalData: 'I am global data',
});
```
