App()
用于注册应用,接受一个 Object 作为属性,用来配置应用的生命周期等。
App()
必须在 app.js 中调用,必须调用且只能调用一次。
属性 | 类型 | 描述 | 触发时机 |
onLaunch | Function | 生命周期回调:监听应用初始化 | 当应用初始化完成时触发,全局只触发一次。 |
onShow | Function | 生命周期回调:监听应用显示 | 当应用启动,或从后台进入前台显示时触发。 |
onHide | Function | 生命周期回调:监听应用隐藏 | 当应用从前台进入后台时触发。 |
onError | Function | 监听应用错误 | 当应用发生 js 错误时触发。 |
onShareAppMessage | Function | 全局分享配置 |
前台/后台定义:
1)应用用户点击右上角关闭,或者按下设备 Home 键离开淘宝时,应用并不会直接销毁,而是进入后台。
2)当用户再次进入淘宝或再次打开应用时,应用会从后台进入前台。
3)只有当应用进入后台一定时间,或占用系统资源过高,才会被真正销毁。
object 属性说明:
属性 | 类型 | 描述 |
query | Object | 当前应用的 query,从启动参数的 query 字段解析而来。 |
path | String | 当前应用的页面地址,从启动参数 page 字段解析而来,page 忽略时默认为首页。 |
referrerInfo | Object | 来源信息。 |
比如,启动应用的 schema url 如下:
https://m.duanqu.com/?_ariver_appid=20000067&query=number%3D1&page=x%2Fy%2Fz
参数解析如下:
query = decodeURIComponent('number%3D1'); // number=1 path = decodeURIComponent('x%2Fy%2Fz'); // x/y/z
1)应用首次启动时,onLaunch
方法可获取 query
、path
属性值。
2)应用在后台被用 schema 打开,也可从 onShow
方法中获取 query
、path
属性值。
App({ onLaunch(options) { // 第一次打开 console.log(options.query); // {number:1} console.log(options.path); // x/y/z }, onShow(options) { // 从后台被 schema 重新打开 console.log(options.query); // {number:1} console.log(options.path); // x/y/z }, });
referrerInfo 子属性说明:
属性 | 类型 | 描述 | 兼容性 |
appId | string | 来源应用 | |
sourceServiceId | String | 来源插件,当处于插件运行模式时可见 |
|
extraData | Object | 来源应用传过来的数据。 |
注意:
1)不要在 onShow
中进行 redirectTo
或navigateTo
等操作页面栈的行为。
2)不要在 onLaunch
里调用 getCurrentPages()
,因为此时 page 还未生成。
应用从前台进入后台时触发 onHide()
。
示例代码:
App({ onHide() { // 进入后台时 console.log('app hide'); }, });
应用发生脚本错误或 API 调用报错时触发。
示例代码:
App({ onError(error) { // 应用执行出错时 console.log(error); }, });
全局分享配置。当页面未设置 page.onShareAppMessage
时,调用分享会执行全局的分享设置,具体见分享。
App()
中可以设置全局数据 globalData
。
下面是一个例子:
// app.js App({ globalData: 1 });