• 微信小程序-生命周期


    目录

    什么是生命周期

    生命周期的分类

    生命周期函数

    小程序的应用生命周期函数

    小程序的页面生命周期函数

    应用生命周期与页面生命周期之间的交互


    微信小程序生命周期可分为应用生命周期、页面生命周期和组件生命周期,本文结合微信官方文档浅析微信小程序的应用生命周期。从注册一个小程序生命周期开始讲起,到一些关于开发的小经验。废话少说,直接来。

    1、App(Object object)
    微信小程序应用生命周期从注册小程序生命周期开始说起,拿Vue.js这比喻,我们要使用Vue就得先new一个Vue对象。而微信小程序通过App(Object object)这个函数来注册小程序,接受一个 Object 参数,其指定小程序的生命周期回调等。
    Tip: App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

    2、App()参数
    App(Object object)也可称为注册程序,这个程序里包含了些关于小程序生命周期相关的函数。或称为App()函数的参数,参数类型是Object object。如下

    属性类型说明触发时间
    onLaunchfunction生命周期回调——监听小程序初始化。小程序初始化完成时触发,全局只触发一次。
    onShowfunction生命周期回调——监听小程序启动或切前台。小程序启动,或从后台进入前台显示时触发。
    onHidefunction生命周期回调——监听小程序切后台。小程序从前台进入后台时触发。
    onErrorfunction错误监听函数。小程序发生脚本错误或 API 调用报错时触发。
    onPageNotFoundfunction页面不存在监听函数。小程序要打开的页面不存在时触发。基础库 1.9.90 开始支持
    onUnhandledRejectionfunction未处理的 Promise 拒绝事件监听函数。小程序有未处理的 Promise 拒绝时触发。基础库 2.10.0 开始支持。
    onThemeChangefunction监听系统主题变化系统切换主题时触发。基础库 2.11.0 开始支持。
    其他any开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

    3、示例代码

    1. App({
    2. onLaunch (options) {
    3. // Do something initial when launch.
    4. },
    5. onShow (options) {
    6. // Do something when show.
    7. },
    8. onHide () {
    9. // Do something when hide.
    10. },
    11. onError (msg) {
    12. console.log(msg)
    13. },
    14. globalData: 'I am global data'
    15. })

    这里需要特别说明的是 globalData 这个函数/对象,这里可以写成函数也可以写成一个单独的变量,这个函数的作用通常是存储全局变量。例如我们在开发过程中可以将后端给的API链接前缀写在这里,这样在项目上线的时候更改API前缀我们就不用一个个去改。如下
    app.js中

    1. //当要存储多个全局变量时,应该这样写
    2. globalData: {
    3. userInfo: null,
    4. urlFirst:'http://192.168.1.15:8089/AppleCampus/f'
    5. }

    再需要使用的页面js文件下,例如index.js中,这样去使用

    1. //index.js
    2. //获取应用实例
    3. const app = getApp()
    4. Page({
    5. data: {
    6. //……
    7. },
    8. onLoad: function () {
    9. wx.request({
    10. //使用应用实例对象app去点访问app.js下的globalData函数下的urlFirst 变量
    11. url: app.globalData.urlFirst + '/module/index/getScheduleData',
    12. data: {},
    13. success(res) {
    14. }
    15. });
    16. })

    这里最后描述的全局表量的使用其实就相当于一点自己的开发经验了。


    什么是生命周期

    生命周期(Life Cycle)是指一个对象从创建→>运行>销毁的整个阶段,强调的是一个时间段。如:

    • 张三出生,表示这个人生命周期的开始
    • 张三离世,表示这个人生命周期的结束
    • 中间张三的一生,就是张三的生命周期

    我们可以把每个小程序运行的过程,也概括为生命周期:

    • 小程序的启动,表示生命周期的开始
    • 小程序的关闭,表示生命周期的结束
    • 中间小程序运行的过程,就是小程序的生命周期

    生命周期的分类

    在小程序中,生命周期分为两类,分别是:

    • 应用生命周期
      特指小程序从启动->运行->销毁的过程
    • 页面生命周期
      特指小程序中,每个页面的加载->渲染->销毁的过程

    其中,页面的生命周期范围较小,应用程序的生命周期范围较大:
    在这里插入图片描述

    生命周期函数

    生命周期函数:是由小程序框架提供的内置函数,会伴随着生命周期,自动按次序执行。

    生命周期函数的作用:允许程序员在特定的时间点,执行某些特定的操作。例如,页面刚加载的时候,可以在onLoad生命周期函数中初始化页面的数据。

    注意:生命周期强调的是时间段,生命周期函数强调的是时间点。

    小程序中的生命周期函数分为两类,分别是:

    • 应用的生命周期函数
      特指小程序从启动->运行-→>销毁期间依次调用的那些函数
    • 页面的生命周期函数
      特指小程序中,每个页面从加载->渲染-→>销毁期间依次调用的那些函数

    小程序的应用生命周期函数

    小程序的应用生命周期函数需要在app.js 中进行声明。如:

    1. App({
    2. /**
    3. * 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
    4. */
    5. onLaunch: function () {
    6. console.log("小程序启动!");
    7. },
    8. /**
    9. * 当小程序启动,或从后台进入前台显示,会触发 onShow
    10. */
    11. onShow: function (options) {
    12. console.log('小程序正在前台运行!');
    13. },
    14. /**
    15. * 当小程序从前台进入后台,会触发 onHide
    16. */
    17. onHide: function () {
    18. console.log("小程序进入后台运行!");
    19. },
    20. /**
    21. * 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
    22. */
    23. onError: function (msg) {
    24. }
    25. })
    1. 用户首次打开小程序,触发 onLaunch(全局只触发一次)。
    2. 小程序初始化完成后,触发onShow方法,监听小程序显示。
    3. 小程序从前台进入后台,触发 onHide方法。
    4. 小程序从后台进入前台显示,触发 onShow方法。
    5. 小程序后台运行一定时间,或系统资源占用过高,会被销毁。
    属性类型描述触发时机
    onLaunchFunction监听小程序初始化当小程序初始化完成时,会触发 onLaunch(全局只触发一次)。
    onShowFunction监听小程序显示当小程序启动,或从后台进入前台显示,会触发 onShow
    onHideFunction监听小程序隐藏当小程序从前台进入后台,会触发 onHide
    onErrorFunction错误监听函数当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
    其他Any开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问,上面的getPics就是函数, globalName是数据,这里面的函数和数据都是全局的。调用方式:在Pager中通过getApp()方法得到App对象并获得全局的数据和调用全局的函数

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

    小程序的页面生命周期函数

    小程序的页面生命周期函数需要在页面.js 中进行声明。如:

    1. Page({
    2. /**
    3. * 页面的初始数据
    4. */
    5. data: {
    6. },
    7. /**
    8. * 生命周期函数--监听页面加载
    9. */
    10. onLoad(options) {
    11. console.log('本地生活页面加载完毕');
    12. },
    13. /**
    14. * 生命周期函数--监听页面初次渲染完成
    15. */
    16. onReady() {
    17. console.log("初次渲染完毕!");
    18. },
    19. /**
    20. * 生命周期函数--监听页面显示
    21. */
    22. onShow() {
    23. console.log("页面显示完成");
    24. },
    25. /**
    26. * 生命周期函数--监听页面隐藏
    27. */
    28. onHide() {
    29. console.log("页面已被隐藏!");
    30. },
    31. /**
    32. * 生命周期函数--监听页面卸载
    33. */
    34. onUnload() {
    35. console.log("GG");
    36. },
    37. /**
    38. * 页面相关事件处理函数--监听用户下拉动作
    39. */
    40. onPullDownRefresh() {
    41. console.log('正在刷新!');
    42. },
    43. /**
    44. * 页面上拉触底事件的处理函数
    45. */
    46. onReachBottom() {
    47. console.log('正在加载更多!');
    48. },
    49. /**
    50. * 用户点击右上角分享
    51. */
    52. onShareAppMessage() {
    53. console.log('用户正在分享!');
    54. }
    55. })
    1. 小程序注册完成后,加载页面,触发onLoad方法。
    2. 页面载入后触发onShow方法,显示页面。
    3. 首次显示页面,会触发onReady方法,渲染页面元素和样式,一个页面只会调用一次。
    4. 当小程序后台运行或跳转到其他页面时,触发onHide方法。
    5. 当小程序有后台进入到前台运行或重新进入页面时,触发onShow方法。
    6. 当使用重定向方法wx.redirectTo(OBJECT)或关闭当前页返回上一页wx.navigateBack(),触发onUnload
    函数说明作用
    onLoad生命周期回调—监听页面加载发送请求获取数据
    onShow生命周期回调—监听页面显示请求数据
    onReady生命周期回调—监听页面初次渲染完成获取页面元素(少用)
    onHide生命周期回调—监听页面隐藏终止任务,如定时器或者播放音乐
    onUnload生命周期回调—监听页面卸载终止任务

    应用生命周期与页面生命周期之间的交互

    在这里插入图片描述

    1. 小程序初始化完成后,页面首次加载触发onLoad,只会触发一次。
    2. 当小程序进入到后台,先执行页面onHide方法再执行应用onHide方法。
    3. 当小程序从后台进入到前台,先执行应用onShow方法再执行页面onShow方法。

    实例演示:

    在这里插入图片描述
    监听事件:

    在这里插入图片描述 

  • 相关阅读:
    中华传统文化题材网页设计主题:基于HTML+CSS设计放飞青春梦想网页【学生网页设计作业源码】
    SAP 销售订单审批状态参数设置
    mysql笔记
    ISO14708-3:2017中关于有源植入物对非电离辐射的防护
    redis中使用lua脚本
    【Python基础入门6】Python的输入与运算符
    最强分布式搜索引擎——ElasticSearch
    生成多层迷宫-wilson算法
    影像仪激光扫描功能,无缝连接2D/3D混合测量
    第一篇博客:HTML:background的使用
  • 原文地址:https://blog.csdn.net/mooczhimahu/article/details/126588958