小程序 App
App(Object)
App()
函数用来注册一个小程序。接受一个 Object
参数,
App() 必须在 app.js
中调用,且只能调用一次。
Object参数说明:
属性 | 类型 | 描述 | 触发时机 |
---|---|---|---|
onLaunch | Function | 生命周期回调—监听小程序初始化 | 小程序初始化完成时触发(全局只触发一次) |
onShow | Function | 生命周期回调—监听小程序显示 | 小程序启动,或从后台进入前台显示时触发 |
onHide | Function | 生命周期回调—监听小程序隐藏 | 小程序从前台进入后台时触发 |
onError | Function | 错误监听函数 | 当小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息 |
onPageNotFound | Function | 页面不存在监听函数 | 小程序要打开的页面不存在时触发,会带上页面信息回调该函数 |
其他 | 不限制 | 开发者可自由添加任意的 function 或数据到 Object 参数中,用this 可访问 |
前台、后台定义:小程序启动后,用户能够看到当前界面,此时小程序处于前台状态,当用户通过右上角椭圆按钮关闭小程序或者离开宿主app时,小程序并没有立刻终止运行,而是进入了后台状态,此时会触发 onHide 回调事件。当用户再次进入宿主app或再次打开小程序,小程序又会从后台切换至前台,此时会触发onShow 回调事件;如果用户长时间没有打开小程序,或者系统资源紧张,小程序可能被销毁,此时小程序会完全退出。 `
示例代码:
App({
onLaunch: function(options) {
console.log("launch 参数",options)
},
onShow: function(options) {
console.log("onShow 参数",options)
},
onHide: function() {
},
onError: function(error) {
console.log("错误信息:",error)
},
globalData: ''
})
onLaunch(Object)
小程序初始化完成时触发,全局仅触发一次。
Object 参数说明:
字段 | 类型 | 说明 |
---|---|---|
path | String | 打开小程序的路径 |
query | Object | 打开小程序的 query 字段,可通过分享或者唤起协议中配置 |
referrerInfo | Object | 由另一个小程序或其他 App 进入小程序时,返回此字段 |
referrerInfo.appId | String | 来源小程序的 appId,详见下方说明 |
referrerInfo.extraData | Object | 其他来源传过来的数据 |
onShow(Object)
小程序启动,或从后台进入前台时触发,每次切换到前台均会触发。
Object 参数说明:
与 onLaunch
一致
onHide()
小程序从前台进入后台时触发,每次切换到后台均会触发
onError(String error)
小程序发生脚本错误,或者 api 调用失败时触发。
参数说明
名称 | 类型 | 说明 |
---|---|---|
error | String | 包含堆栈的错误信息 |
onPageNotFound(Object)
要打开的目标页面不存在时触发,经常用于捕获路由跳转的目标页面不存在情况。
参数说明
名称 | 类型 | 说明 |
---|---|---|
path | String | 不存在的页面的路径 |
query | Object | 打开不存在得页面的 query 参数 |
isEntryPage | Boolean | 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面) |
开发者可以在 onPageNotFound
回调中进行重定向处理,但必须在回调中同步处理,异步处理无效。
示例代码
App({
onPageNotFound(res) {
jd.redirectTo({
url: 'pages/index/index.jxml'
})
}
})
注意:
- 如果开发者没有添加
onPageNotFound
监听,当跳转的目标页面不存在时,将由宿主APP接管处理; - 请确保
onPageNotFound
回调中重定的目标页面存在,否则将由宿主APP接管处理,并且不再回调onPageNotFound
,避免调用死循环。
getApp(Object)
全局方法,getApp()
函数可以用来获取到小程序 App
实例,多用于页面中调用,获取APP实例的全局数据和方法。值得注意的是,在app.js
中的 APP()
方法中调用时,可通过 this 直接获取到,在其他页面中用 getApp()
方法。
Object 参数说明:
字段 | 类型 | 说明 |
---|---|---|
allowDefault | Boolean | 在 App 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到 App 中。 |
示例代码:
const APP = getApp();
console.log(APP.globalData) // 输出 global data