# 小程序 App

# App(Object)

App() 函数用来注册一个小程序。接受一个 Object 参数,其指定小程序的生命周期回调等。

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

Object 参数说明:

属性 类型 描述 触发时机
onLaunch Function 生命周期回调—监听小程序初始化 小程序初始化完成时(全局只触发一次)
onShow Function 生命周期回调—监听小程序显示 小程序启动,或从后台进入前台显示时
onHide Function 生命周期回调—监听小程序隐藏 小程序从前台进入后台时
onError Function 错误监听函数 小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息
onPageNotFound Function 页面不存在监听函数 小程序要打开的页面不存在时触发,会带上页面信息回调该函数
其他 Any 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问

前台、后台定义: 当用户点击右上角关闭,或者按了设备 Home 键离开QQ,小程序并没有直接销毁,而是进入了后台;当再次进入QQ或再次打开小程序,又会从后台进入前台。需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

关闭小程序: 当用户从扫一扫、转发等入口(场景值为1007, 1008, 1011, 1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。

示例代码:

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'
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# onLaunch(Object)

小程序初始化完成时触发,全局只触发一次。参数也可以使用 qq.getLaunchOptionsSync 获取。

参数说明:

qq.getLaunchOptionsSync 一致

# onShow(Object)

小程序启动,或从后台进入前台显示时触发。也可以使用 qq.onAppShow 绑定监听。

参数说明:

qq.onAppShow 一致

# onHide()

小程序从前台进入后台时触发。也可以使用 qq.onAppHide 绑定监听。

# onError(String error)

小程序发生脚本错误或 API 调用报错时触发。也可以使用 qq.onError 绑定监听。

参数说明

qq.onError 一致

# onPageNotFound(Object)

小程序要打开的页面不存在时触发。也可以使用 qq.onPageNotFound 绑定监听。注意事项请参考 qq.onPageNotFound

参数说明:

qq.onPageNotFound 一致

示例代码:

App({
  onPageNotFound(res) {
    qq.redirectTo({
      url: 'pages/...'
    }) // 如果是 tabbar 页面,请使用 qq.switchTab
  }
})
1
2
3
4
5
6
7

# getApp(Object)

全局的 getApp() 函数可以用来获取到小程序 App 实例。

Object 参数说明:

字段 类型 说明 最低版本
allowDefault Boolean App 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到App中。一般用于独立分包

示例代码:

// other.js
const appInstance = getApp()
console.log(appInstance.globalData) // I am global data
1
2
3

注意:

  • 不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。
  • 通过 getApp() 获取实例之后,不要私自调用生命周期函数。