您的位置:首页 > 汽车 > 时评 > 潍坊网站制作建设_动漫设计中专学校_百度推广引流_百度收录比较好的网站

潍坊网站制作建设_动漫设计中专学校_百度推广引流_百度收录比较好的网站

2024/9/20 18:27:42 来源:https://blog.csdn.net/qq_53673551/article/details/142358654  浏览:    关键词:潍坊网站制作建设_动漫设计中专学校_百度推广引流_百度收录比较好的网站
潍坊网站制作建设_动漫设计中专学校_百度推广引流_百度收录比较好的网站

5.png


目录

  • 前言
  • 应用生命周期
  • 页面的生命周期
  • 组件的生命周期
  • 渲染顺序
  • 页面路由
  • 运行机制
  • 更新机制
    • 同步更新
    • 异步更新


前言

VueReact 框架一样,微信小程序框架也存在生命周期,实质也是一堆会在特定时期执行的函数。

小程序中,生命周期主要分成了三部分:

  • 应用的生命周期
  • 页面的生命周期
  • 组件的生命周期
  • 在微信小程序第一次渲染结束后,利用 setData 修改数据不会导致生命周期变化(与 VUE 不同)
  • 只有当 路由发生改变,及页面跳转才会涉及到相关的生命周期改变

应用生命周期

属性说明
onLaunch小程序初始化 - 全局只触发一次
onShow监听小程序显示,从后台切回前台
onHide小程序切回后台
onError错误监听函数
onPageNotFound页面不存在监听函数
onUnhandledRejection未处理的 Promise reject 函数
onThemeChange系统主题变化函数

页面的生命周期

属性说明
onLoad页面加载时触发,可以获取页面参数(options),进行初始化操作
onShow监听页面显示,页面从后台切回前台
onReady页面渲染完成,可以进行DOM/动画操作(执行一次)
onHide页面隐藏/切回后台
onUnload页面卸载,当前页面栈出栈触发
onRouteDone路由动画完成

组件的生命周期

属性说明
created组件创建时执行,不能调用 setData
attached页面显示,可进行初始化操作
ready页面渲染完成,可以进行DOM/动画操作(执行一次)
moved组件实例被移动到另一位置
detached组件被卸载
error组件方法出错
show组件所在的页面被展示,在 Page onShow 前
hide组件所在的页面被隐藏在,Page onHide 前
resize组件所在的页面尺寸变化
routeDone组件所在的页面路由动画完成

组件自身生命周期在 lifetimes 定义,组件所在页面的生命周期由 pageLifetimes 定义。

渲染顺序

  • 应用 App 页面 Page 组件 Component

  • 进入:onLaunch(App) => onShow(App)

  • 初始化:created(Component)=> attached(Component)=> onLoad(Page)=> show(Component)=> onShow(Page)=> ready(Component)=> onReady(Page)

  • 页面隐藏:使用 pageLifetimes hide show 展示

  • 页面卸载:onUnload(Page)=> detached(B)

子组件先初始化,后卸载

页面路由

页面路由 | 微信开放文档

运行机制

小程序运行机制 | 微信开放文档

在这里插入图片描述

冷启动:首次打开/销毁后打开,小程序需要重新进行加载

热启动:后台切前台,即小程序还存在手机的任务管理器中

小程序运行机制中,需要注意的特性如下:

  1. 挂起状态,停止逻辑线程的执行,内存数据被保存,事件和接口回调会在下一次进入前台触发
  2. 30分钟挂起被销毁,占用资源过高被系统/微信客户端销毁
  3. 小程序被销毁前,可以利用 页面回调函数 onSaveExitState保存页面数据状态

更新机制

小程序更新机制 | 微信开放文档

开发者在管理后台发布新版本的小程序之后,微信客户端会有若干个时机去检查本地缓存的小程序有没有新版本,并进行小程序的代码包更新。但如果用户本地有小程序的历史版本,此时打开的可能还是旧版本。

同步更新

  1. 微信运行时,定期检查小程序是否有更新,如果存在,更新到最新版本后再打开小程序
  2. 若用户处于弱网环境、下载最新版本失败等情况下,仍会启动本地的较低版本

异步更新

  1. 小程序每次冷启动 会检查更新版本,发现新版本后,将会异步下载新版本的代码包。但本次启动仍会使用客户端本地的旧版本代码,即新版本的小程序需要等 下一次冷启动**** 才会使用。
  2. 如果发现本次更新的版本,可以利用代码强制更新
const updateVersion = () => {if (!wx.canIUse('getUpdateManager')) {return}const updateManager = wx.getUpdateManager()// 版本信息检查updateManager.onCheckForUpdate((res) => {console.log('版本信息', res)})// 新版本更新updateManager.onUpdateReady((res) => {console.log('准备更新版本', res)wx.showModal({title: '更新提示',content: '新版本已经准备好,是否重启应用?',success(res) {if (res.confirm) {// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启updateManager.applyUpdate()}}})})// 新版本下载失败updateManager.onUpdateFailed((err) => {console.log('新版本下载失败', err)})
}export default updateVersion

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com