当前位置: 首页 > news >正文

关于 uni-app 与原生微信小程序中的生命周期 —— 一次“生命旅程”的解读

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

文章目录

  • 关于 uni-app 与原生微信小程序中的生命周期 —— 一次“生命旅程”的解读
    • 引言
    • 生命周期的作用
    • uni-app 的生命周期
      • 🔹 应用生命周期
      • 🔹 页面生命周期
    • 微信小程序的生命周期
      • 🔹 应用生命周期
      • 🔹 页面生命周期
    • uni-app 与 微信小程序生命周期对比
    • 实际应用场景举例
    • 总结
    • ① 应用生命周期(App 级别)
    • ② 页面生命周期(Page 级别)
    • ③ uni-app & 微信小程序对比小结(简图)
    • ③ uni-app & 微信小程序对比小结(简图)

在这里插入图片描述

关于 uni-app 与原生微信小程序中的生命周期 —— 一次“生命旅程”的解读

引言

如果把一个小程序的运行比作一个人的一生

  • 从出生(创建页面) → 到成长(页面渲染) → 到学习工作(与用户交互) → 到离开(页面销毁)。
    这就是所谓的 生命周期

uni-app原生微信小程序 中,都有一套生命周期函数来管理页面的“起承转合”。理解这些生命周期,就像知道什么时候吃饭、什么时候睡觉一样重要。否则你可能在不该吃饭的时候硬塞一口,结果报错 🤣。

在这里插入图片描述


生命周期的作用

生命周期的主要作用是:

  1. 让我们在合适的时间做合适的事情
    • 页面刚出现:检查登录状态、拉取服务器数据。
    • 页面即将消失:保存草稿、停止定时器。
  2. 提高代码结构清晰度
    • 不用把所有逻辑都写在一个地方,而是分阶段执行。
  3. 避免性能问题和 Bug
    • 在正确的生命周期调用接口,可以避免“白屏”“数据没加载到”等情况。

uni-app 的生命周期

uni-app 的生命周期有两大类:

  • 应用级别生命周期(整个 App,从打开到退出)
  • 页面级别生命周期(单个页面,从进入到离开)

🔹 应用生命周期

生命周期函数触发时机作用举例
onLaunchApp 初始化时触发(只触发一次)适合做 登录态检查初始化全局数据
onShowApp 前台运行时触发适合统计用户使用时长进入页面埋点
onHideApp 进入后台时触发停止音乐播放、保存用户输入

示例代码:

// App.vue
export default {// 应用启动时(只触发一次)onLaunch() {console.log("App 启动啦!");// 例如:检查本地是否有 tokenconst token = uni.getStorageSync("token")if (!token) {console.log("未登录,跳转到登录页")uni.redirectTo({ url: "/pages/login/login" })}},// 应用进入前台onShow() {console.log("App 回到前台");// 例如:重新刷新首页数据},// 应用进入后台onHide() {console.log("App 进入后台");// 例如:停止音乐播放}
}

🔹 页面生命周期

生命周期函数触发时机作用举例
onLoad页面加载时拉取接口数据、获取参数
onShow页面显示时每次进入页面时刷新数据
onReady页面首次渲染完成时页面渲染完成后操作 DOM 或加载动画
onHide页面隐藏时停止定时器、暂停视频
onUnload页面卸载时清理数据、释放资源

示例代码:

// pages/home/home.vue
export default {// 页面加载时onLoad(query) {console.log("页面加载,参数:", query);// 拉取服务器数据this.getPageData()},// 页面显示时onShow() {console.log("页面显示");// 例如:刷新用户消息数量},// 页面渲染完成onReady() {console.log("页面渲染完成");// 例如:开启动画},// 页面隐藏onHide() {console.log("页面隐藏");// 停止定时器clearInterval(this.timer)},// 页面卸载onUnload() {console.log("页面卸载");// 清理缓存数据},methods: {getPageData() {uni.request({url: "https://api.example.com/home",success: (res) => {console.log("首页数据:", res.data)}})}}
}

微信小程序的生命周期

微信小程序生命周期与 uni-app 大同小异,但写法上略有区别。

🔹 应用生命周期

生命周期函数触发时机作用举例
onLaunch小程序初始化(只一次)初始化登录态
onShow小程序进入前台埋点统计、页面更新
onHide小程序进入后台停止音乐、保存状态
// app.js
App({onLaunch() {console.log("小程序启动")},onShow() {console.log("小程序进入前台")},onHide() {console.log("小程序进入后台")}
})

🔹 页面生命周期

生命周期函数触发时机作用举例
onLoad页面加载获取页面参数、请求数据
onShow页面显示每次进入时刷新数据
onReady页面首次渲染完成操作 DOM、执行动画
onHide页面隐藏暂停视频/音乐
onUnload页面卸载释放资源
// pages/home/home.js
Page({onLoad(query) {console.log("页面加载", query)this.getPageData()},onShow() {console.log("页面显示")},onReady() {console.log("页面渲染完成")},onHide() {console.log("页面隐藏")},onUnload() {console.log("页面卸载")},getPageData() {wx.request({url: "https://api.example.com/home",success(res) {console.log("首页数据:", res.data)}})}
})

uni-app 与 微信小程序生命周期对比

场景uni-app微信小程序建议做的事
应用启动onLaunchonLaunch检查登录、初始化全局数据
应用进入前台onShowonShow埋点统计、刷新首页
页面加载onLoadonLoad拉取接口数据、获取路由参数
页面显示onShowonShow刷新页面数据
页面渲染完成onReadyonReady开启动画、处理 UI
页面隐藏onHideonHide暂停定时器/视频
页面卸载onUnloadonUnload清理缓存、释放资源

实际应用场景举例

  1. 查看登录情况
    • 放在 应用 onLaunch:只需要检查一次。
  2. 调用服务器页面初始数据
    • 放在 页面 onLoad:页面加载就拉取数据。
  3. 刷新页面数据(比如消息未读数)
    • 放在 页面 onShow:因为用户可能多次进入页面,需要更新。
  4. 开启动画、获取页面元素大小
    • 放在 页面 onReady:确保页面渲染完成。
  5. 定时器、视频播放
    • onShow 启动,在 onHide 清除

总结

生命周期就像是舞台剧的流程表

  • 灯亮了(onLoad):演员入场,布置舞台。
  • 演出中(onShow):和观众互动,唱歌跳舞。
  • 幕布落下(onHide):暂停,后台准备。
  • 演出结束(onUnload):清理道具,撤场。

掌握它们,你就能在正确的时机安排代码,让小程序运行流畅自然。

被着急退出,有彩蛋!!!

① 应用生命周期(App 级别)

启动小程序 / 打开App↓onLaunch (只执行一次)↓onShow (每次进入前台都会执行)↓
[用户切到后台] → onHide↓
[用户重新打开] → onShow↓
[彻底关闭小程序] → 生命周期结束

👉 适合做的事:

  • onLaunch:检查登录状态、初始化全局变量。
  • onShow:刷新首页、埋点统计。
  • onHide:保存草稿、停止音乐。

② 页面生命周期(Page 级别)

进入页面↓onLoad (页面加载, 获取参数/请求数据)↓onShow (页面显示, 每次进入都会执行)↓onReady (首次渲染完成, 操作UI/动画)↓
[用户切换页面] → onHide (页面隐藏)↓
[再次进入页面] → onShow (重新触发)↓
[彻底关闭页面] → onUnload (页面销毁)

👉 适合做的事:

  • onLoad:获取路由参数,请求接口数据。
  • onShow:刷新消息、更新数据。
  • onReady:开启动画、操作 DOM。
  • onHide:暂停视频、停止定时器。
  • onUnload:清理缓存、释放资源。

③ uni-app & 微信小程序对比小结(简图)

【App 启动】↓App.onLaunch → App.onShow↓
【进入页面】↓Page.onLoad → Page.onShow → Page.onReady↓
【页面切换】↓Page.onHide → Page.onShow↓
【退出页面】↓Page.onUnload↓
【App 进入后台】↓App.onHide

e`:暂停视频、停止定时器。

  • onUnload:清理缓存、释放资源。

③ uni-app & 微信小程序对比小结(简图)

【App 启动】↓App.onLaunch → App.onShow↓
【进入页面】↓Page.onLoad → Page.onShow → Page.onReady↓
【页面切换】↓Page.onHide → Page.onShow↓
【退出页面】↓Page.onUnload↓
【App 进入后台】↓App.onHide
http://www.dtcms.com/a/490576.html

相关文章:

  • 方圆网通网站建设公司怎么做不用数据库的网站
  • uniapp 打开横竖屏。usb调试时可以横竖屏切换,但是打包发布后却不行?
  • 有些网站开发人员工具无反应老闵行小学排名
  • Ubuntu20.04安装Anbox安卓模拟器
  • aspx php哪个做门户网站好万秀服务不错的seo推广
  • 回文串问题
  • 【Winform】Gerber文件解析坐标工具代码
  • k8s 网络策略详解--图文篇
  • 伟淼科技深度解析过度营销—告别流量轰炸企业破解营销困局新路径
  • POM思想的理解与示例
  • 案例精选 | 某大型船舶制造集团安全运营服务实践
  • 复习总结最终版:C语言
  • react 无限画布难点和实现
  • 网站开发浏览器wordpress投票类主题
  • Qt_day2
  • DMXAPI |使用1个Key接入主流大模型
  • 三星企业网站建设ppt网站建设需要使用哪些设备
  • 23种设计模式——中介者模式 (Mediator Pattern)详解
  • iOS八股文之 RunLoop
  • zibbix
  • Macbook数据恢复 Disk Drill
  • 公司招聘一个网站建设来做推广制作表情包的软件
  • WebSocket实时通信:Socket.io
  • xml方式bean的配置---实例化bean的方式
  • 212. Java 函数式编程风格 - Java 编程风格转换:命令式 vs 函数式(以循环为例)
  • Ubuntu 24.04 修改 ssh 监听端口
  • 1千元以下做网站的公司wordpress sso插件开发
  • Pytorch神经网络工具箱
  • PyTorch DataLoader 高级用法
  • 怎么做一个网站app吗金华网站建设价格