小程序生命周期

1. 生命周期

生命周期是一类函数的统称,这些函数在特殊的时间点或遇到一些特殊的框架事件时被自动触发。他们的作用是负责监听一些操作或者状态,当到达了某些特殊的时间点或者发生了某些特殊的事件时,这些函数就会触发,我们可以通过这种函数来在相应的时间点或事件下,实现我们的小程序应有的功能。
小程序生命周期分为应用、页面和组件三个部分。

1.1 应用生命周期

初次进入小程序的时候,微信客户端初始化好宿主环境(我们称微信客户端给小程序所提供的环境为宿主环境。小程序借助宿主环境提供的能力,可以完成许多普通网页无法完成的功能。),同时从网络下载或者从本地缓存中拿到小程序的代码包,把它注入到宿主环境,初始化完毕后,微信客户端就会给App实例派发onLaunch事件,App构造器参数所定义的onLaunch方法会被调用。

进入小程序之后,用户可以点击右上角的关闭,或者按手机设备的Home键离开小程序,此时小程序并没有被直接销毁,我们把这种情况称为“小程序进入后台状态”,App构造器参数所定义的onHide方法会被调用。

当再次回到微信或者再次打开小程序时,微信客户端会把“后台”的小程序唤醒,我们把这种情况称为“小程序进入前台状态”,App构造器参数所定义的onShow方法会被调用。

我们可以看到,App的生命周期是由微信客户端根据用户操作主动触发的。为了避免程序上的混乱,我们不应该从其他代码里主动调用App实例的生命周期函数。

在微信客户端中打开小程序有很多途径:从群聊会话里打开,从小程序列表中打开,通过微信扫一扫二维码打开,从另外一个小程序打开当前小程序等,针对不同途径的打开方式,小程序有时需要做不同的业务处理,所以微信客户端会把打开方式带给onLaunch和onShow的调用参数options,示例代码以及详细参数如代码清单3-5和表3-2所示。需要留意小程序的宿主环境在迭代更新过程会增加不少打开场景,因此要获取最新的场景值说明请查看官方文档:场景值 | 微信开放文档

//app.js    小程序的生命周期函数在 app.js 中声明
App({
  onLaunch: function() { 
      //小程序初始化(全局只触发一次)
      // 在onLaunch函数中,我们可以像其中添加自己想要进行的初始操作,例如获取用户信息、申请权限、获取服务器数据等,为小程序的后续功能提供方便。


  },
  onShow: function(e) {
      //小程序显示 可以获取进入小程序时的场景值
      console.log(e)
  },
  onHide: function() {
      //小程序隐藏
      // onHide的时间点是微信小程序被切到后台时开始执行。通过onHide函数,我们可以实现小程序被切到后台后,计时器暂停计时、统计切后台次数等自己想要的功能。
  },
  onError: function(msg) {
      //小程序错误
      // onError函数的执行时间点是在我们的代码运行出错时执行
  },
})
1.1.1 onLaunch

用户首次打开小程序,触发 onLaunch(全局只触发一次)。

1.1.2 onShow

小程序初始化完成后,触发 onShow 方法,监听小程序显示。

1.1.3 onHide

小程序从前台进入后台,触发 onHide 方法。

1.1.4 onShow

小程序从后台进入前台显示,触发 onShow 方法。

1.1.5 onError

小程序出错,触发onError

onLaunch, onShow 方法会返回一个参数对象, 里面包含了三个参数 , path,query和scene ,path是打开小程序的路径

query是打开小程序页面url的参数,scene是打开小程序的场景值

更多场景值可以查看
场景值 | 微信开放文档

前台、后台定义: 当用户点击右上角关闭,或者按了设备返回键离开微信小程序,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台

2.1 页面的生命周期

页面初次加载的时候,微信客户端就会给Page实例派发onLoad事件,Page构造器参数所定义的onLoad方法会被调用,onLoad在页面没被销毁之前只会触发1次,在onLoad的回调中,可以获取当前页面所调用的打开参数option。
页面显示之后,Page构造器参数所定义的onShow方法会被调用,一般从别的页面返回到当前页面时,当前页的onShow方法都会被调用。
在页面初次渲染完成时,Page构造器参数所定义的onReady方法会被调用,onReady在页面没被销毁前只会触发1次,onReady触发时,表示页面已经准备妥当,在逻辑层就可以和视图层进行交互了。
以上三个事件触发的时机是onLoad早于 onShow,onShow早于onReady。

2.1.1 onLoad

onLoad页面加载时触发,且只发生一次,可以理解为vue中的created。 一般用于获取上个页面传递的参数或数据的初始化操作

2.1.2 onShow

页面载入后触发onShow方法,显示页面,可以理解为mounted。一般用于插件的初始化操作

2.1.3 onReady

onReady 页面初次渲染之后触发

2.1.4 onHide

离开本页面时,触发onHide方法。

2.1.5 onUnload

当页面从页面栈中被销毁时,触发onUnload方法
 

【参考】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值