全部产品
云市场

app.js 注册小程序

更新时间:2019-09-09 14:07:28

App(object: Object)

  • App() 用于注册小程序,接受一个 Object 作为属性,用来配置小程序的生命周期等。
  • App() 必须在 app.js 中调用,必须调用且只能调用一次。

object 属性说明

属性 类型 描述 触发时机
onLaunch Function 生命周期回调:监听小程序初始化 当小程序初始化完成时触发,全局只触发一次。
onShow Function 生命周期回调:监听小程序显示 当小程序启动,或从后台进入前台显示时触发。
onHide Function 生命周期回调:监听小程序隐藏 当小程序从前台进入后台时触发。
onError Function 监听小程序错误 当小程序发生 JS 错误时触发。
onShareAppMessage Function 全局分享配置

前台/后台定义:

  • 小程序用户点击右上角关闭,或者按下设备 Home 键离开支付宝时,小程序并不会直接销毁,而是进入后台。
  • 当用户再次进入支付宝或再次打开小程序时,小程序会从后台进入前台。
  • 只有当小程序进入后台一定时间,或占用系统资源过高,才会被真正销毁。

onLaunch(object: Object) 及 onShow(object: Object)

object 属性说明:

属性 类型 描述
query Object 当前小程序的 query,从启动参数的 query 字段解析而来。
path String 当前小程序的页面地址,从启动参数 page 字段解析而来,page 忽略时默认为首页。
referrerInfo Object 来源信息

例如,启动小程序的 schema url 如下:

  1. alipays://platformapi/startapp?appId=1999&query=number%3D1&page=x%2Fy%2Fz

参数解析如下:

  1. query = decodeURIComponent('number%3D1');
  2. // number=1
  3. path = decodeURIComponent('x%2Fy%2Fz');
  4. // x/y/z
  • 小程序首次启动时,onLaunch 方法可获取 querypath 属性值。
  • 小程序在后台被用 schema 打开,也可从 onShow 方法中获取 querypath 属性值。
  1. App({
  2. onLaunch(options) {
  3. // 第一次打开
  4. console.log(options.query);
  5. // {number:1}
  6. console.log(options.path);
  7. // x/y/z
  8. },
  9. onShow(options) {
  10. // 从后台被 schema 重新打开
  11. console.log(options.query);
  12. // {number:1}
  13. console.log(options.path);
  14. // x/y/z
  15. },
  16. });

referrerInfo 子属性说明:

属性 类型 描述 兼容性
appId string 来源小程序
sourceServiceId String 来源插件,当处于插件运行模式时可见 1.11.0
extraData Object 来源小程序传过来的数据。
说明
  • 不要在 onShow 中进行 redirectTonavigateTo 等操作页面栈的行为。
  • 不要在 onLaunch 里调用 getCurrentPages(),因为此时 page 还未生成。

onHide()

小程序从前台进入后台时触发 onHide()

示例代码:

  1. App({
  2. onHide() {
  3. // 进入后台时
  4. console.log('app hide');
  5. },
  6. });

onError(error: String)

小程序发生脚本错误或 API 调用报错时触发。

  1. App({
  2. onError(error) {
  3. // 小程序执行出错时
  4. console.log(error);
  5. },
  6. });

onShareAppMessage(object: Object)

全局分享配置。当页面未设置 page.onShareAppMessage 时,调用分享会执行全局的分享设置,具体内容参见 分享

globalData 全局数据

App() 中可以设置全局数据 globalData

代码示例:

  1. // app.js
  2. App({
  3. globalData: 1
  4. });