程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 原生微信小程序

    • 小程序入门级配置

    • 模板与配置

    • 视图与逻辑

      • 页面导航
      • 页面事件
      • 生命周期
        • 1. 什么是生命周期
        • 2. 小程序生命周期的分类
        • 3. 什么是生命周期函数
        • 4. 生命周期函数的分类
        • 5. 应用的生命周期函数
        • 6. 页面的生命周期函数
      • WXS脚本
    • 自定义组件

  • uniapp多端开发

  • 小程序开发
  • 原生微信小程序
  • 视图与逻辑
scholar
2024-10-18
目录

生命周期

# 生命周期

# 1. 什么是生命周期

生命周期(Life Cycle)是指一个对象从创建、运行到销毁的整个过程。它强调的是对象在时间上的变化和存在的不同阶段。

例如:

  • 人的生命周期:从出生开始,经历成长、成熟,直到去世。张三的一生就是他的生命周期。
  • 程序的生命周期:从程序启动到运行,再到退出或被关闭,这个过程就是程序的生命周期。

在微信小程序中,每个小程序的运行过程也可以被看作是一个生命周期:

  • 小程序启动:表示生命周期的开始。
  • 小程序关闭:表示生命周期的结束。
  • 小程序的运行过程:就是小程序的整个生命周期。

# 2. 小程序生命周期的分类

在微信小程序中,生命周期可以分为两大类:

  1. 应用生命周期:

    • 应用生命周期指的是整个小程序从启动到运行,再到销毁的过程。它涵盖了小程序的所有页面。
  2. 页面生命周期:

    • 页面生命周期则指的是每个页面从加载到渲染,再到被销毁的过程。每个页面都有自己独立的生命周期,与应用的生命周期相对独立。

如下图所示,应用的生命周期范围较大,而页面的生命周期相对较小:

生命周期分类

# 3. 什么是生命周期函数

生命周期函数是小程序框架提供的内置函数,这些函数在生命周期的不同阶段自动按顺序执行,开发者可以通过这些函数控制程序在特定的时间点执行特定的操作。

例如,当页面刚加载时,可以在 onLoad 函数中初始化页面的数据;当页面即将销毁时,可以在 onUnload 函数中进行资源清理。

区别:

  • 生命周期:强调的是整个时间段。
  • 生命周期函数:强调的是特定的时间点,在这个时间点上可以执行特定的操作。

# 4. 生命周期函数的分类

小程序中的生命周期函数主要分为两类:

  1. 应用的生命周期函数:

    • 这些函数是在小程序从启动到运行再到销毁的过程中依次调用的。
  2. 页面的生命周期函数:

    • 这些函数是在每个页面从加载、渲染、交互到销毁的过程中依次调用的。

# 5. 应用的生命周期函数

应用的生命周期函数是指整个小程序的生命周期,包括小程序的启动、前台运行、后台运行和销毁等。应用生命周期函数在 app.js 文件中进行声明和实现。

常见的应用生命周期函数:

  1. onLaunch:当小程序初始化时触发,整个应用只会触发一次。
  2. onShow:当小程序从后台进入前台时触发。
  3. onHide:当小程序从前台进入后台时触发。
  4. onError:当小程序发生脚本错误或 API 调用失败时触发。
  5. onPageNotFound:当跳转页面不存在时触发。

示例代码(在 app.js 中实现应用生命周期函数):

App({
  onLaunch: function() {
    console.log('小程序初始化');
  },
  onShow: function() {
    console.log('小程序进入前台');
  },
  onHide: function() {
    console.log('小程序进入后台');
  },
  onError: function(msg) {
    console.log('小程序发生错误:' + msg);
  }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14

下图展示了应用的生命周期函数在 app.js 中的声明示例:

应用的生命周期函数

# 6. 页面的生命周期函数

页面的生命周期函数控制的是每个页面的生命周期,如页面的加载、显示、隐藏和卸载等。这些函数可以在每个页面的 .js 文件中进行定义。

常见的页面生命周期函数:

  1. onLoad:页面加载时触发,通常用于初始化页面数据。
  2. onShow:页面显示时触发,每次页面进入前台都会触发。
  3. onReady:页面初次渲染完成时触发,只触发一次。
  4. onHide:页面被隐藏时触发,通常发生在页面被其他页面覆盖时。
  5. onUnload:页面被销毁时触发,通常用于清理工作,如关闭定时器等。

示例代码(在页面的 .js 文件中实现页面生命周期函数):

Page({
  onLoad: function() {
    console.log('页面加载');
  },
  onShow: function() {
    console.log('页面显示');
  },
  onReady: function() {
    console.log('页面初次渲染完成');
  },
  onHide: function() {
    console.log('页面隐藏');
  },
  onUnload: function() {
    console.log('页面销毁');
  }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

下图展示了页面的生命周期函数在 .js 文件中的声明示例:

页面的生命周期函数

总结

生命周期是微信小程序开发中的核心概念,分为应用生命周期和页面生命周期。每个小程序从启动到运行,再到销毁的过程都可以通过生命周期函数进行控制,帮助开发者在合适的时间点执行特定的操作。理解并掌握这些生命周期函数,能让开发者更好地管理程序的状态和资源,并优化用户体验。

编辑此页 (opens new window)
上次更新: 2025/01/31, 00:08:39
页面事件
WXS脚本

← 页面事件 WXS脚本→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式