微信小程序开发之入门级02(带你进一步了解微信小程序开发)

news2024/12/26 21:09:37

目录

​编辑

前言

一、 微信小程序的生命周期

1. 概述

2. 全局与页面的生命周期函数

2.1 全局的生命周期函数:

2.2 页面的生命周期函数:

3. 常用的生命周期函数和对应的应用场景

3.1 onLaunch(小程序启动)

3.2 onShow(小程序显示): 

3.3 onHide(小程序隐藏):

3.4 onUnload(小程序卸载):

4. 扩展:额外的生命周期函数和对应的应用场景

4.1 onReady:

4.2 onPullDownRefresh:

4.3 onReachBottom:

4.4 onShareAppMessage:

4.5 onTabItemTap:

二、视图层与逻辑层

视图层

1. 概念

2. 视图层演示案例(WXML)

2.1 数据绑定

2.2  列表渲染

数组

对象

 

2.3 条件渲染

 2.4 模版

逻辑层

页面跳转的几种情况:

1. 一级跳一级(a->b)

2. 一级跳二级 (a->c)

 3. 二级跳一级

4.  二级跳二级(c->d)

4. 二级跳一级(c->b)

5. 隔着页面跳(a->b->c->d->a)


前言

        在上一期的博客中我们已经初步的与大家共同去了解了有关微信小程序的一些基本的知识,今天我们来继续探寻有关微信小程序的知识。

一、 微信小程序的生命周期

1. 概述

        微信小程序的生命周期分为一下几个阶段:

  1. 启动阶段(onLaunch):当用户打开小程序时,会触发启动事件,此时可以进行一些初始化操作,比如获取用户信息、获取系统信息等。

  2. 显示阶段(onShow):当小程序启动后或从后台切换到前台时,会触发显示事件,此时小程序界面会展示给用户。在这个阶段,可以进行一些数据的刷新、页面的渲染等操作。

  3. 隐藏阶段(onHide):当小程序从前台切换到后台时,会触发隐藏事件,此时小程序界面对用户不可见。在这个阶段,可以进行一些清理工作、保存用户数据等。

  4. 销毁阶段(onUnload):当小程序被关闭时,会触发销毁事件,此时可以进行一些资源释放、清理工作等。

        除此之外,小程序还可以通过监听页面的其他事件来实现不同的功能,比如页面加载事件(onLoad)、页面显示事件(onShow)、页面隐藏事件(onHide)、页面卸载事件(onUnload)等。可以根据具体需求来使用相应的生命周期函数来控制小程序的行为。

2. 全局与页面的生命周期函数

2.1 全局的生命周期函数:

App(全局)生命周期函数:

  • onLaunch:小程序启动时触发,可以进行一些初始化操作。
  • onShow:小程序显示时触发,可以进行页面数据刷新、音视频播放等操作。
  • onHide:小程序隐藏时触发,可以进行数据保存、清理缓存等操作。

2.2 页面的生命周期函数:

Page(页面)生命周期函数:

  • onLoad:页面加载时触发,可以进行页面数据初始化等操作。
  • onShow:页面显示时触发,可以进行数据刷新、动画效果等操作。
  • onHide:页面隐藏时触发,可以进行数据保存、动画停止等操作。
  • onUnload:页面卸载时触发,可以进行资源释放、清理操作等。

3. 常用的生命周期函数和对应的应用场景

3.1 onLaunch(小程序启动)

  • 可用于进行全局的初始化操作,如获取系统信息、登录态验证等。

3.2 onShow(小程序显示): 

  • 可用于进行页面数据的刷新和更新,如显示最新的数据、重新加载广告等。
  • 可用于进行用户行为分析,如统计用户进入小程序的次数、记录用户行为等。
  • 可用于处理一些特定场景下的逻辑,如在小程序退回前台时重新播放音频。

3.3 onHide(小程序隐藏):

  • 可用于进行数据的保存和清理,如保存用户编辑的内容、清理临时数据等。
  • 可用于停止一些无必要的后台操作,如停止音频播放、暂停视频播放等。

3.4 onUnload(小程序卸载):

  • 可用于进行一些资源的释放和清理,如关闭定时器、断开网络连接等。
  • 可用于保存必要的数据和状态,以供下次使用,如保存用户的登录信息、设置选项等。

注意事项: 

        小程序的生命周期函数触发时机可能会受到一些特殊情况的影响,比如系统资源紧张、网络异常等。因此,在编写代码时,应考虑到这些情况,保证代码的健壮性和可靠性。

4. 扩展:额外的生命周期函数和对应的应用场景

4.1 onReady:

        页面初次渲染完成时触发,表示页面已经准备好可以和用户进行交互了。可以在这个函数中进行一些需要页面渲染完成后才可执行的操作,比如获取页面 DOM 节点、初始化动画效果等。

4.2 onPullDownRefresh:

用户下拉刷新时触发,可以在这个函数中执行与下拉刷新相关的操作,如重新加载数据、清空缓存等。注意,在 onPullDownRefresh 函数中需要手动调用 wx.stopPullDownRefresh() 方法来告诉小程序刷新完成。 

4.3 onReachBottom:

 页面滚动到底部时触发,可以在这个函数中执行与加载更多数据相关的操作,比如分页加载、无限滚动等。

4.4 onShareAppMessage:

 用户点击右上角分享按钮或调用小程序内置分享组件时触发,可以在这个函数中配置分享的标题、图片、路径等信息,并返回给小程序的用户。可以用于增加小程序的传播范围和用户量。

4.5 onTabItemTap:

用户点击底部 TabBar 时触发,可以在这个函数中执行与底部导航相关的操作,比如切换页面、更新数据等。 

二、视图层与逻辑层

视图层

1. 概念

        视图层负责处理小程序的UI界面展示,包括各种页面、组件和样式等。开发者可以使用WXML (WeiXin Markup Language) 和 WXSS (WeiXin Style Sheets) 来描述视图层的结构和样式。视图层可以响应用户的交互事件,比如点击、滑动等,将用户的操作反馈到逻辑层处理。

        逻辑层负责处理小程序的业务逻辑,包括网络请求、数据处理、事件处理等。开发者可以使用JavaScript来编写逻辑层的代码,并通过API接口来访问微信提供的各种能力,比如获取用户信息、调用系统功能等。逻辑层可以通过数据绑定将数据更新到视图层,也可以监听视图层的事件来进行相应的处理。

        视图层和逻辑层在小程序运行时是分离的,分别运行在不同的线程中,通过微信小程序的运行时框架进行通信和交互。这种架构可以实现页面的快速渲染和流畅的交互体验,提高小程序的性能和用户体验。

2. 视图层演示案例(WXML)

框架的视图层由 WXML 与 WXSS 编写,由组件来进行展示。

将逻辑层的数据反映成视图,同时将视图层的事件发送给逻辑层。

WXML(WeiXin Markup language) 用于描述页面的结构。

WXS(WeiXin Script) 是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

WXSS(WeiXin Style Sheet) 用于描述页面的样式。

组件(Component)是视图的基本组成单元。

2.1 数据绑定

<view class="container">
  <view class="userinfo">
   数据绑定:{{username}}

  </view>

</view>
// page.js
Page({
  data: {
    username: '君易'
  }
})

2.2  列表渲染
数组
<!--pages/index/user.wxml-->
<view class="container">
 
  列表渲染
  数组
  <view wx:for="{{array}}"> {{item}} </view>

</view>
// page.js
Page({
  data: {
    array: [1, 2, 3, 4, 5]
  }
})

对象
<!--pages/index/user.wxml-->
<view class="container">
  
  列表渲染

  对象
  <view wx:for="{{user}}">编号:{{item.id}} 名称:{{item.name}}</view>
</view>
 
// page.js
Page({
  data: {
   user:[{id:1,name:'木易'},
      {id:2,name:'曦曦'},
      {id:3,name:'君易'}]
  }
})

2.3 条件渲染
<!--pages/index/user.wxml-->
<view class="container">
 
条件渲染
  <!--wxml-->
<view wx:if="{{view == '木易'}}"> 木易 </view>
<view wx:elif="{{view == '君易'}}"> 君易 </view>
<view wx:else="{{view == '曦曦'}}"> 曦曦 </view>

</view>
// page.js
Page({
  data: {
    view: '木易'
  }
})

 2.4 模版
<!--pages/index/user.wxml-->
<view class="container">
 
模版
<!--wxml-->
<template name="staffName">
  <view>
    FirstName: {{firstName}}, LastName: {{lastName}}
  </view>
</template>

<template is="staffName" data="{{...staffA}}"></template>
<template is="staffName" data="{{...staffB}}"></template>
<template is="staffName" data="{{...staffC}}"></template>

</view>
Page({
  data: {
    staffA: {firstName: '木易', lastName: '君易'},
    staffB: {firstName: '曦曦', lastName: '乖乖'},
    staffC: {firstName: '君易', lastName: '鑨'}
  }
})

         还有一些其他的案例演示,例如:WXSS、WXS、事件系统等等,我们可以去官网借鉴文档实现效果。

逻辑层

生成一个一级菜单,将一下代码添加到app.json中

  "tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首页"
    }, {
      "pagePath": "pages/a/a",
      "text": "a页面"
    },{
      "pagePath": "pages/b/b",
      "text": "b页面"
    }]
  },

将index页面放在第一行作为首页,效果如下。 

 

 并且点击能实现页面跳转

页面跳转的几种情况:

1. 一级跳一级(a->b)

a页面:onload、onshow、onready

a页面跳b页面:a页面执行onHide

b页面:onload、onshow、onready

 

2. 一级跳二级 (a->c)

a页面跳c页面:a页面执行onHide

c页面:onload、onshow、onready

 

 3. 二级跳一级

c->a :

c页面:onUnload

a页面:onshow

 

4.  二级跳二级(c->d)

c页面:onHide

d页面:onload、onshow、onready

 

d返回c: 

d页面:onunload

c页面:onshow

 

4. 二级跳一级(c->b)

c页面:onUnload

b页面:onload、onshow、onready

 

5. 隔着页面跳(a->b->c->d->a)

c页面:onUnload

d页面:onUnload

a页面:onload、onshow、onready

 

总结:

(1)一级页面不会销毁

(2)二级页面跳转到层级低的页面会进行销毁

(3)二级层级低跳高的只会隐藏

(4)隔着页面跳转则会将中间的低级页面进行销毁。

        老铁们今天的分享到此,记得三连加关注哦

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac卸载微信输入法方法

陪伴着「微信输入法」更新了N多个beta版本之后&#xff0c;最终还是选择卸载。 至今&#xff0c;微信输入法也没有来到1.0。 本来&#xff0c;每次期望着它能有更大的提升&#xff0c;但是最后发现&#xff0c;搞输入法确实也需要技术沉淀的。 但也必须承认&#xff0c;这个绿色…

【oceanbase】centos7/kylinv10部署oceanbase(x86版本)

1. 修改系统​ vim /etc/sysctl.conf fs.file-max 102400 net.nf_conntrack_max 1024000 net.netfilter.nf_conntrack_max 1024000 2. 修改 ulimit 的 open file&#xff0c;系统默认的 ulimit 对文件打开数量的限制是 1024 vim /etc/security/limits.conf # 加入以下…

消防应急疏散指示系统在某生物制药工厂项目的应用

安科瑞 华楠 摘要 消防应急照明和疏散指示系统由控制器、集中电源和灯具&#xff08;疏散指示灯具、应急照明灯具&#xff09;等几部分组成。系统采用17寸工业平板电脑、Windonws7系统&#xff0c;可支持联动报警、系统监控、故障报警、自检、备电、记录存储与查询、导光流、…

物流行业案例 | 甄知猪齿鱼助力构建高效研发体系,搭建统一的研发管理平台

随着全球经济的发展和电子商务的兴起&#xff0c;物流行业正经历着快速的变革和发展&#xff0c;作为支撑我国经济发展的重要基础设施&#xff0c;近年来社会物流总额一直保持着平稳增长的趋势。根据中国物流与采购联合会数据&#xff0c;2012-2022年&#xff0c;我国社会物流总…

Improving Generalization with Domain Convex Game

文章目录 AbstractIntroductionContributions Related WorkDomain GeneralizationConvex GameMeta Learning Domain Convex Game 使用域凸策略改进领域泛化 Abstract Domain generalization (DG) tends to alleviate the poor generalization capability of deep neural netwo…

在自己的摄像头上测试ORB_SLAM3

文章目录 硬件相机标定IMU标定依赖编译可能遇到的问题 硬件 x86电脑realsense d435i相机 相机标定 IMU标定 依赖 Ceres # CMake sudo apt-get install cmake # google-glog gflags sudo apt-get install libgoogle-glog-dev libgflags-dev # BLAS & LAPACK sudo apt…

STM32 外部中断

STM32 外部中断 中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行 中断就是…

ABeam ESG News | 深化校企合作,ABeam中国ESG与可持续发展负责人做客上海财经大学ESG主题讲座回顾

ABeam上海财经大学 近日&#xff0c;ABeam中国ESG与可持续发展负责人杨丽楠女士受邀来到上海财经大学&#xff0c;作为外语学院30周年院庆系列学术活动的分享嘉宾&#xff0c;为近200名学生开展了ESG主题专场讲座。本次讲座探讨了ESG&#xff08;环境、社会和治理&#xff09;因…

使用CFimagehost源码搭建无需数据库支持的PHP免费图片托管私人图床

文章目录 1.前言2. CFImagehost网站搭建2.1 CFImagehost下载和安装2.2 CFImagehost网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar临时数据隧道3.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;3.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 4.公网访问测…

前端实现锥形渐变

锥形渐变 使用conic-gradient即可解决 渐变效果 width: 150px 和 height: 150px 设置元素的宽度和高度为 150 像素&#xff0c;使其呈现为一个正方形。border-radius: 50% 设置元素的圆角半径为 50%&#xff0c;使其呈现为一个圆形。border: 2px solid #000 设置元素的边框为…

研发效能认证学员作品:如何做好敏捷实践丨IDCF

作者&#xff1a;徐渊峰&#xff08;现就职兴业数字金融服务&#xff08;上海&#xff09;股份有限公司 研发管理部&#xff09; 研发效能&#xff08;DevOps&#xff09;工程师&#xff08;中级&#xff09;认证、A-CSM认证、ITIL4 认证、信息系统项目管理师 引言 有句话是…

k8s-16 k8s调度

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 kube-scheduler 是 Kubernetes 集群的默认调度器&#xff0c;并且是集群控制面的一部分如果你真的希望或者有这方面…

跳过开屏广告

前段时间各大知名启屏广告自动跳过 APP,诸如李跳跳、叮小跳、蹦跶、大圣净化、一指禅等因收到律师函而停止更新维护的事情闹得人心惶惶 不少粉丝就开始担心起来「今后怎么办啊?」的问题 My My Love,Joshua Radin - Wax Wings 1 自定义规则 虽然 APP 被迫下架这事令人神伤,…

超多目标演化算法及其应用研究

超多目标优化的分类 基于算法的核心思想&#xff0c;我们将超多目标演化方法分为以下几类&#xff1a; 基于松弛的支配定义的方法&#xff08;Relaxed domainance &#xff09;、试图通过放松传统的支配定义来提升算法的选择压力 基于多样性的方法&#xff08;Diversity &…

HCIP第一课--HCIA复习

目录 1. OSI 模型 OSI 模型: 开放式系统互联参考模型 2. 网络名词注解&#xff1a; 【1】封装&#xff0c;解封装 【2】TCP/IP&#xff1a; 【3】IEEE802.3数据链路层分类&#xff1a; 【4】访问一个谷歌&#xff08;百度&#xff09;服务器的流程&#xff1f; 【5】DHCP…

【Linux】使用timer_create()创建定时器发送信号并使用sigaction()处理信号

0x00 前言 最后更新时间&#xff1a;2023-10-16 0x01 主要函数及结构体介绍 1.sigaction函数 #include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);功能&#xff1a; 用于改变进程接收到特定信号后的行为。 参数…

【Linux】chown命令使用

Linux chown&#xff08;英文全拼&#xff1a;change owner&#xff09;命令用于设置文件所有者和文件关联组的命令。 Linux/Unix 是多人多工操作系统&#xff0c;所有的文件皆有拥有者。利用 chown 将指定文件的拥有者改为指定的用户或组&#xff0c;用户可以是用户名或者用户…

分享微信聊天记录备份的2个方法!

很多时候&#xff0c;我们可能会因为一些原因不小心把微信聊天记录给弄丢&#xff0c;比如&#xff1a;卸载微信、清理了微信缓存、手滑误删、删除了微信好友等等。这对于常年使用微信的用户来说&#xff0c;无疑是一件头疼的事情。 为了防止意外发生导致数据丢失&#xff0c;…

Idea安装和使用教程

在本文中&#xff0c;我们将提供关于如何安装 IntelliJ IDEA 的详细步骤。如果您是初学者或只是想尝试一下 IDEA&#xff0c;我们建议您下载 Community 版。如果您需要更多高级功能&#xff0c;可以选择 Ultimate 版。 步骤一&#xff1a;下载 IntelliJ IDEA 首先&#xff0c;…