小程序 App

App(Object)

App() 函数用来注册一个小程序。接受一个 Object 参数,

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

Object参数说明:

属性类型描述触发时机
onLaunchFunction生命周期回调—监听小程序初始化小程序初始化完成时触发(全局只触发一次)
onShowFunction生命周期回调—监听小程序显示小程序启动,或从后台进入前台显示时触发
onHideFunction生命周期回调—监听小程序隐藏小程序从前台进入后台时触发
onErrorFunction错误监听函数当小程序发生脚本错误,或者 api 调用失败时触发,会带上错误信息
onPageNotFoundFunction页面不存在监听函数小程序要打开的页面不存在时触发,会带上页面信息回调该函数
其他不限制开发者可自由添加任意的 function 或数据到 Object 参数中,用this 可访问

前台、后台定义:小程序启动后,用户能够看到当前界面,此时小程序处于前台状态,当用户通过右上角椭圆按钮关闭小程序或者离开宿主app时,小程序并没有立刻终止运行,而是进入了后台状态,此时会触发 onHide 回调事件。当用户再次进入宿主app或再次打开小程序,小程序又会从后台切换至前台,此时会触发onShow 回调事件;如果用户长时间没有打开小程序,或者系统资源紧张,小程序可能被销毁,此时小程序会完全退出。 `

示例代码:

  1. App({
  2. onLaunch: function(options) {
  3. console.log("launch 参数",options)
  4. },
  5. onShow: function(options) {
  6. console.log("onShow 参数",options)
  7. },
  8. onHide: function() {
  9. },
  10. onError: function(error) {
  11. console.log("错误信息:",error)
  12. },
  13. globalData: ''
  14. })

onLaunch(Object)

小程序初始化完成时触发,全局仅触发一次。

Object 参数说明:

字段类型说明
pathString打开小程序的路径
queryObject打开小程序的 query 字段,可通过分享或者唤起协议中配置
referrerInfoObject由另一个小程序或其他 App 进入小程序时,返回此字段
referrerInfo.appIdString来源小程序的 appId,详见下方说明
referrerInfo.extraDataObject其他来源传过来的数据

onShow(Object)

小程序启动,或从后台进入前台时触发,每次切换到前台均会触发。

Object 参数说明:

onLaunch 一致

onHide()

小程序从前台进入后台时触发,每次切换到后台均会触发

onError(String error)

小程序发生脚本错误,或者 api 调用失败时触发。

参数说明

名称类型说明
errorString包含堆栈的错误信息

onPageNotFound(Object)

要打开的目标页面不存在时触发,经常用于捕获路由跳转的目标页面不存在情况。

参数说明

名称类型说明
pathString不存在的页面的路径
queryObject打开不存在得页面的 query 参数
isEntryPageBoolean是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面)

开发者可以在 onPageNotFound 回调中进行重定向处理,但必须在回调中同步处理,异步处理无效。

示例代码

  1. App({
  2. onPageNotFound(res) {
  3. jd.redirectTo({
  4. url: 'pages/index/index.jxml'
  5. })
  6. }
  7. })

注意:

  1. 如果开发者没有添加 onPageNotFound 监听,当跳转的目标页面不存在时,将由宿主APP接管处理;
  2. 请确保 onPageNotFound 回调中重定的目标页面存在,否则将由宿主APP接管处理,并且不再回调 onPageNotFound,避免调用死循环。

getApp(Object)

全局方法,getApp() 函数可以用来获取到小程序 App 实例,多用于页面中调用,获取APP实例的全局数据和方法。值得注意的是,在app.js中的 APP()方法中调用时,可通过 this 直接获取到,在其他页面中用 getApp() 方法。

Object 参数说明:

字段类型说明
allowDefaultBoolean在 App 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到 App 中。

示例代码:

  1. const APP = getApp();
  2. console.log(APP.globalData) // 输出 global data