文档中心 > 店铺动态卡片-开发指引

app.js 注册应用

更新时间:2023/02/02 访问次数:31915

一、App(object: Object)

 

App() 用于注册应用,接受一个 Object 作为属性,用来配置应用的生命周期等。

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

 

二、object 属性说明


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

 

前台/后台定义:

1)应用用户点击右上角关闭,或者按下设备 Home 键离开淘宝时,应用并不会直接销毁,而是进入后台。

2)当用户再次进入淘宝或再次打开应用时,应用会从后台进入前台。

3)只有当应用进入后台一定时间,或占用系统资源过高,才会被真正销毁。

 

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

 

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 方法可获取 querypath 属性值。

2)应用在后台被用 schema 打开,也可从 onShow 方法中获取 querypath 属性值。

 

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 中进行 redirectTonavigateTo 等操作页面栈的行为。

2)不要在 onLaunch 里调用 getCurrentPages(),因为此时 page 还未生成。

 

2. onHide()

 

应用从前台进入后台时触发 onHide()

 

示例代码:

App({
  onHide() {
    // 进入后台时
    console.log('app hide');
  },
});

 

3. onError(error: String)

 

应用发生脚本错误或 API 调用报错时触发。


 示例代码:

App({
  onError(error) {
    // 应用执行出错时
    console.log(error);
  },
});

 

4. onShareAppMessage(object: Object)

 

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

 

三、globalData 全局数据

 

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

 

下面是一个例子:

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


 

FAQ

关于此文档暂时还没有FAQ
返回
顶部