# App(Object object)

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

`App()` 必须在 `app.js` 中调用，必须调用且只能调用一次。

现在并不推荐使用 `App()` 中的参数，而是使用对应的 `wx` 调用来代替。

## 参数

#### Object object

| 属性                                                        | 类型     | 默认值 | 必填 | 说明                                                                     | 最低版本                |
|-------------------------------------------------------------|----------|--------|------|--------------------------------------------------------------------------|-------------------------|
| onLaunch                         | function |        | 否   | 生命周期回调——监听小程序初始化。                                         |                         |
| onShow                             | function |        | 否   | 生命周期回调——监听小程序启动或切前台。                                   |                         |
| onHide                                           | function |        | 否   | 生命周期回调——监听小程序切后台。                                         |                         |
| onError                            | function |        | 否   | 错误监听函数。                                                           |                         |
| onPageNotFound             | function |        | 否   | 页面不存在监听函数。                                                     | [1.9.90](/miniprogram/dev/framework/compatibility.md) |
| onUnhandledRejection | function |        | 否   | 未处理的 Promise 拒绝事件监听函数。                                                     | [2.10.0](/miniprogram/dev/framework/compatibility.md) |
| onThemeChange | function |        | 否   | 监听系统主题变化 | [2.11.0](/miniprogram/dev/framework/compatibility.md) |
| 其他                                                        | any      |        | 否   | 开发者可以添加任意的函数或数据变量到 `Object` 参数中，用 `this` 可以访问（不推荐，应改用 [模块化](/miniprogram/dev/framework/app-service/module.md) 的方式） |                         |

> 关于小程序前后台的定义和小程序的运行机制，请参考[运行机制](/miniprogram/dev/framework/runtime/operating-mechanism.md)章节。

### onLaunch(Object object)

小程序初始化完成时触发，全局只触发一次。参数也可以使用 [wx.getLaunchOptionsSync](/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.md) 获取。

**参数**：与 [wx.getLaunchOptionsSync](/miniprogram/dev/api/base/app/life-cycle/wx.getLaunchOptionsSync.md) 一致

### onShow(Object object)

小程序启动，或从后台进入前台显示时触发。也可以使用 [wx.onAppShow](/miniprogram/dev/api/base/app/app-event/wx.onAppShow.md) 绑定监听。

**参数**：与 [wx.onAppShow](/miniprogram/dev/api/base/app/app-event/wx.onAppShow.md) 一致

### onHide()

小程序从前台进入后台时触发。也可以使用 [wx.onAppHide](/miniprogram/dev/api/base/app/app-event/wx.onAppHide.md) 绑定监听。

**参数**：与 [wx.onAppHide](/miniprogram/dev/api/base/app/app-event/wx.onAppHide.md) 一致

### onError(String error)

小程序发生脚本错误或 API 调用报错时触发。也可以使用 [wx.onError](/miniprogram/dev/api/base/app/app-event/wx.onError.md) 绑定监听。

**参数**：与 [wx.onError](/miniprogram/dev/api/base/app/app-event/wx.onError.md) 一致

### onPageNotFound(Object object)

> 基础库 1.9.90 开始支持，低版本需做[兼容处理](/miniprogram/dev/framework/compatibility.md)。

小程序要打开的页面不存在时触发。也可以使用 [wx.onPageNotFound](/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.md) 绑定监听。注意事项请参考 [wx.onPageNotFound](/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.md)。

**参数**：与 [wx.onPageNotFound](/miniprogram/dev/api/base/app/app-event/wx.onPageNotFound.md) 一致

**示例代码：**

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

### onUnhandledRejection(Object object)

> 基础库 2.10.0 开始支持，低版本需做[兼容处理](/miniprogram/dev/framework/compatibility.md)。

小程序有未处理的 Promise 拒绝时触发。也可以使用 [wx.onUnhandledRejection](/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.md) 绑定监听。注意事项请参考 [wx.onUnhandledRejection](/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.md)。

**参数**：与 [wx.onUnhandledRejection](/miniprogram/dev/api/base/app/app-event/wx.onUnhandledRejection.md) 一致

### onThemeChange(Object object)

> 基础库 2.11.0 开始支持，低版本需做[兼容处理](/miniprogram/dev/framework/compatibility.md)。

系统切换主题时触发。也可以使用 [wx.onThemeChange](/miniprogram/dev/api/base/app/app-event/wx.onThemeChange.md) 绑定监听。

**参数**：与 [wx.onThemeChange](/miniprogram/dev/api/base/app/app-event/wx.onThemeChange.md) 一致

## 示例代码

```js
// 不推荐的写法
App({
  onLaunch(options) {
    // 在启动时执行
  },
  onError(msg) {
    // 发生脚本错误时执行
    console.log(msg)
  },
})
```

```js
// 推荐的写法
App()

wx.onError(function () {
  // 发生脚本错误时执行
  console.log(msg)
})

// 在启动时执行
var options = wx.getLaunchOptionsSync()
```
