支付宝小程序框架 app.js 注册小程序
App(object: Object)
App()
用于注册小程序,接受一个 Object
作为属性,用来配置小程序的生命周期等。 App()
必须在 app.js
中调用,必须调用且只能调用一次。
object 属性说明
属性 | 类型 | 描述 | 触发时机 | 基础库最低版本 |
---|---|---|---|---|
onLaunch | Function | 生命周期回调:监听小程序初始化 | 当小程序初始化完成时触发,全局只触发一次。参数也可以使用 my.getLaunchOptionsSync 获取。 | - |
onShow | Function | 生命周期回调:监听小程序显示 | 当小程序启动,或从后台进入前台显示时触发。也可以使用 my.onAppShow 绑定监听。 | - |
onHide | Function | 生命周期回调:监听小程序隐藏 | 当当前页面被隐藏时触发,例如跳转、按下设备 Home 键离开。也可以使用 my.onAppHide 绑定监听。 | - |
onError | Function | 监听小程序错误 | 当小程序发生 js 错误时触发。也可以使用 my.onError 绑定监听。 | - |
onShareAppMessage | Function | 全局分享配置 | - | - |
onUnhandledRejection | Function | 监听 unhandledrejection 事件 | 当 Promise 被 reject 且没有 reject 处理器时,会触发 onUnhandledRejection 事件。也可以使用 my.onUnhandledRejection 绑定监听。 | 1.24.1 |
前台/后台定义:
- 小程序用户点击右上角关闭,或者按下设备 Home 键离开支付宝时,小程序并不会直接销毁,而是进入后台。
- 当用户再次进入支付宝或再次打开小程序时,小程序会从后台进入前台。
- 只有当小程序进入后台 5 分钟后,或占用系统资源过高,才会被真正销毁。
onLaunch(object: Object) 及 onShow(object: Object)
object 属性说明:
属性 | 类型 | 描述 |
---|---|---|
query | Object | 当前小程序的 query,从启动参数的 query 字段解析而来 |
scene | number | 启动小程序的 场景值 |
path | string | 当前小程序的页面地址,从启动参数 page 字段解析而来,page 忽略时默认为首页 |
referrerInfo | Object | 来源信息 |
比如,启动小程序的 scheme 如下:
alipays://platformapi/startapp?appId=1999&query=number%3D1&page=x%2Fy%2Fz
- 小程序首次启动时,
onLaunch
方法可获取query
、path
属性值。 - 小程序在后台被用 scheme 打开,也可从
onShow
方法中获取query
、path
属性值。
App({
onLaunch(options) {
// 第一次打开
console.log(options.query);
// {number:1}
console.log(options.path);
// x/y/z
},
onShow(options) {
// 从后台被 scheme 重新打开
console.log(options.query);
// {number:1}
console.log(options.path);
// x/y/z
},
});
referrerInfo
子属性说明:
属性 | 类型 | 描述 | 最低版本 |
---|---|---|---|
appId | string | 来源小程序。 | - |
sourceServiceId | string | 来源插件,当处于插件运行模式时可见。 | 1.11.0 |
extraData | Object | 来源小程序传过来的数据。 | - |
注意:
- 不要在
onShow()
中进行 my.redirectTo 或 my.navigateTo 等操作页面栈的行为。 - 不要在
onLaunch()
里调用 getCurrentPages(),因为此时page
还未生成。
onHide()
小程序从前台进入后台时触发 onHide()
。
示例代码:
App({
onHide() {
// 进入后台时
console.log('app hide');
},
});
onError(error: String)
小程序发生脚本错误时触发。
示例代码:
App({
onError(error) {
// 小程序执行出错时
console.log(error);
},
});
onShareAppMessage(object: Object)
全局分享配置。当页面未设置 page.onShareAppMessage
时,调用分享会执行全局的分享设置,具体详情请参见 页面事件处理函数。
onUnhandledRejection(object: Object)
当Promise
被 reject
且没有 reject
处理器时触发。也可使用 my.onUnhandledRejection 绑定监听。
参数和注意事项与 my.onUnhandledRejection 一致。
示例代码:
App({
onUnhandledRejection(res) {
// 当小程序代码的Promise 被 reject 且没有 reject 处理器时触发。
console.log(res.reason, res.promise);
//res.reason 是reject原因,res.promise 是被reject的Promise对象
},
});
globalData 全局数据
App()
中可以设置全局数据 globalData
。
示例代码:
// app.js
App({
globalData: 1
});
常见问题
Q:可以在 app.js 中关闭小程序吗?
A:不可以,关闭小程序得方法仅支持小程序页面点击右上角的关闭按钮。