【Day03】0基础微信小程序入门-学习笔记
文章目录
- 视图与逻辑
- 学习目标
- 页面导航
- 1. 声明式导航
- 2. 编程式导航
- 3. 导航传参
- 页面事件
- 1. 下拉刷新
- 2. 上拉触底
- 3.扩展-自定义编译模式
- 生命周期
- 1. 简介
- 2. 生命周期函数
- 3. 应用的生命周期函数
- 4. 页面生命周期函数
- WXS脚本
- 1. 概述
- 2. 基础语法
- 3. WXS的特点
- 4. 使用WXS处理手机号
- 总结
视图与逻辑
持续更新~
学习目标
- 能够知道如何实现页面之间的导航跳转
- 能够知道如何实现下拉刷新效果
- 能够知道如何实现上拉加载更多效果
- 能够知道小程序中常用的生命周期函数
页面导航
指的是页面之间的相互跳转
实现页面导航的两种方式:
-
声明式导航
声明一个
navigator
导航组件,点击组件实现页面跳转 -
编程式导航
调用小程序的导航
API
,实现页面跳转。
1. 声明式导航
导航到tabBar
页面:
须要指定url
属性和open-type
属性。
url
:要跳转的页面地址,必须/
开头
open-type
:表示跳转方式,必须为switchTab
示例:
<navigator url:'/pages/message/message' open-type="switchTab">导航到消息页面</navigator>
导航到非tabBar
页面:
须要指定url
属性和open-type
属性。
url
:要跳转的页面地址,必须/
开头
open-type
:表示跳转方式,必须为navigate
<navigator url:'/pages/info/info' open-type=""></navigator>
导航到非
tabBar
页面时,open-type
属性可以省略。
后退导航:
如果要后退到上一页面或多级页面,则需要指定open-type
和delta
属性
open-type
:表示跳转方式,必须为navigateBack
。
delta
的值必须是数字,表示要后退的层级,默认值为1,可省略。
<navigator open-type="navigatorBack" delta="1"></navigator>
2. 编程式导航
导航到tabBar
页面:
调用wx.switchTab(Object object)
方法,可以跳转到tabBar
页面。
其中Object
参数对象的属性列表如下:
属性 | 类型 | 是否必选 | 说明 |
---|---|---|---|
url | string | 是 | 需要跳转的 tabBar 页面的路径,路径后不能带参数 |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例:
<button bindtap="gotoMessage">跳转到消息页面
</button>
gotoMessage(){wx.switchTab({url:'/pages/message/message'})
}
导航到非tabBar
页面:
调用wx.navigateTo(Object object)
方法,可以跳转到非tabBar
的页面。
object的参数列表:
属性 | 类型 | 是否必选 | 说明 |
---|---|---|---|
url | string | 是 | 需要跳转到的非 tabBar页面的路径,路径后可以带参数 |
success | function | 否 | 接口调用成功的回调函数 |
fail | function | 否 | 接口调用失败的回调函数 |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
<button bindtap="gotoInfo"> 跳转到消息页面
</button>
gotoInfo(){wx.navigateTo({url:'/pages/info/info'})
}
后退导航:
调用 wx.navigateBack(0bject object)
方法,可以返回上一页面或多级页面。
属性 | 类型 | 是否必选 | 默认值 | 说明 |
---|---|---|---|---|
delta | number | 否 | 1 | 返回的页面数,如果 delta 大于现有页面数,则返回到首页 |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例:
<button bindtap="gotoBack">后退
</button>
gotoBack(){wx.navigateBack({//后退一层,delta可省略delta:1})
}
3. 导航传参
声明式导航传参:
url
指定路径,后面可以携带参数
- 参数与路径之间使用
?
分隔 - 参数键和值之用
=
相连 - 不同参数用
&
分隔
<navigator url="/pages/info/infoo?name=ruru&age=18"></navigator>
编程式导航传参:
也是在url
地址中进行改动
<button bindtap=“gotoInfo>跳转到info页面
</button>
gotoInfo(){wx.navigateTo({url:'/pages/info/info?name=ruru&gender=女'})
}
在onLoad
中接收导航参数:
通过声明式导航传参或编程式导航传参所携带的参数,可以直接在onLoad
事件中直接获取到,通过options
进行接收。
onLoad:function(options){//options就是导航传递过来的参数对象console.log(options)
}
为了让其他方法也可以使用到options中的数据,一般定义一个query
对象接收导航传递过来的参数对象。
data:{//导航传递过来的参数对象query:{}
}
onLoad:function(options){//options就是导航传递过来的参数对象console.log(options)this.setData({//赋值query:options})
}
页面事件
1. 下拉刷新
下拉刷新,指的是手指在屏幕上下拉滑动操作,从而重新加载页面数据的行为。
下来刷新的两种方式:全局开启下拉刷新、局部开启下拉刷新。两种方式都是在json
文件中将enablePullDownRefresh
设置为true
,配置位置不同。
推荐为需要的页面单独开启下拉刷新的效果,不建议全局配置喔~
配置下拉刷新窗口样式:窗口背景颜色backgroundColor
和下拉loading
样式backgroundTextStyle
监听页面下拉刷新事件:
在.js
文件中,通过onPullDownRefresh()
函数监听。只要触发了下拉刷新行为,就会立刻执行这个函数。
关闭下拉刷新使用 wx.stopPullDownRefresh()
这个方法。
onPullDownRefresh:function(){console.log('触发了message页面的下拉刷新')//调用此函数,可关闭下拉刷新效果wx.stopPullDownRefresh()
}
2. 上拉触底
指的是手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。
在.js
文件中,通过onReachBottom()
函数监听。
onReachBottom:function(){console.log('触发了message页面的上拉触底事件')
}
每次触底都会触发这个函数,为了提高性能,我们使用节流。
配置上拉触底距离:
指的是触发上拉触底事件时,滚动条距离页面底部的距离。在.json
文件中通过onReachBottomDistance
属性配置,默认是50px
,可修改。
3.扩展-自定义编译模式
按需求填写
生命周期
1. 简介
生命周期(Life Cycle)
是指一个对象从创建 ->运行 ->销毁的整个阶段,强调的是一个时间段。
分类:
-
应用生命周期(范围较大)
小程序 启动 -> 运行 -> 销毁 的过程
-
页面生命周期(范围较小)
小程序每个页面的 加载 -> 渲染 -> 销毁 的过程
2. 生命周期函数
定义:小程序提供的内置函数,伴随生命周期,自动按次序执行。
作用:运行程序员在特定的时间点,执行某些特定的操作。
注意:生命周期强调的是时间段,生命周期函数强调的是时间点。
分类:
-
应用的生命周期函数
小程序从 启动 -> 运行-> 销毁 期间依次调用的函数
-
页面的生命周期函数
每个也买你从 加载 -> 渲染 -> 销毁 期间一次调用的那些函数。
3. 应用的生命周期函数
小程序的应用生命周期函数,需要在app.js
中进行声明
前台:直接面对和操作的界面部分,也就是用户在手机或其他设备上看到和使用的界面
后台:运行在服务器上的后端系统,负责处理小程序的业务逻辑、数据存储、用户管理等功能
//app.js文件
App({//小程序初始化完成时,执行此函数,全局只触发一次,可以做一些初始化的工作onLaunch:function(options){},//小程序启动,或从后台进入前台显示时触发onShow:function(options){},//小程序从前台进入后台时触发onHide:function(){}
})
没有这个图标的话可以在工具-工具栏中打开
4. 页面生命周期函数
小程序的页面生命周期函数需要在.js
文件中进行声明
//页面的.js文件
Page({onLoad:function(options){}, //监听页面加载,一个页面只调用1次onShow:function(){}, //监听页面显示onReady:function(){}, //监听页面初次渲染完成,执行1次onHide:function(){}, //监听页面隐藏onUnload:function(){}, //监听页面卸载,一个页面只调用1次
})
WXS脚本
1. 概述
WXS(WeiXin Script)
是小程序独有的一套脚本语言,结合WXML
可以构建出页面的结构。
wxml
中无法调用在页面的.js
中定义的函数,但是,wxml
中可以调用wxs
中定义的函数。
因此,小程序中wxs
的典型应用场景就是过滤器
了解:
2. 基础语法
内嵌wxs
脚本:
wxs
代码可以编写在 wxml
文件中的wxs
标签内,就像Javascript
代码可以编写在 html
文件中的 script
标签内一样。
wxml
文件中的每个<wxs></wxs>
标签,必须提供 module
属性,用来指定当前 wxs
的模块名称,方便在wxml
中访问模块中的成员。
<view>{{m1.toUpper(username)}}</view>
<wxs mpdule="m1">//将文本转为大写形式module.exports.toUpper = function(str){return str.toUpperCase()}
</wxs>
外联wxs
脚本:
wxs
代码还可以编写在以.wxs
为后缀名的文件内。
//tools.wxs文件
function toLower(str){return str.toLowerCase()
}module.exports = {toLower:toLower
}
使用外联wxs
脚本:
为该标签添加module
和src
属性,分别是模块名称和相对路径。
<wxs src="../../utils/tools.wxs" module="m2"></wxs>
3. WXS的特点
- 与
js
不同 - 不能作为组件的事件回调,典型用法就是"过滤器"
- 隔离性。
wxs
不能调用js
定义的函数,也不能调用小程序提供的API
- 性能好。在
IOS
设备上WXS
比JS
快2~20倍。安卓设备上无差异。
4. 使用WXS处理手机号
//utils/tools.wxs
function splitPhone(str){if(str.length !== 11) return strvar arr = str.split('')//console.log(arr)arr.splice(3,0,'-')arr.splice(8,0,'-')//console.log(arr)return arr.join('')
}
module.expotrs = {splitPhone:splitPhone
}
<!--引入,使用-->
<wxs src="../../utils/tools.wxs" module="tools"></wxs><text>电话:{{tools.splitPhone(item.phone)}}</text>
总结
学完这一课,你要知道:
- 能够知道如何实现页面之间的导航跳转
- 能够知道如何实现下拉刷新效果
- 能够知道如何实现上拉加载更多效果
- 能够知道小程序中常用的生命周期函数
相关文章:

【Day03】0基础微信小程序入门-学习笔记
文章目录 视图与逻辑学习目标页面导航1. 声明式导航2. 编程式导航3. 导航传参 页面事件1. 下拉刷新2. 上拉触底3.扩展-自定义编译模式 生命周期1. 简介2. 生命周期函数3. 应用的生命周期函数4. 页面生命周期函数 WXS脚本1. 概述2. 基础语法3. WXS的特点4. 使用WXS处理手机号 总…...

libctk shared library的设计及编码实践记录
一、引言 1.1 <libctk>的由来 1.2 <libctk>的设计理论依据 1.3 <libctk>的设计理念 二、<libctk>的依赖库 三、<libctk>的目录说明 四、<libctk>的功能模块及使用实例说明 4.1 日志模块 4.2 mysql client模块 4.3 ftp client模块 4…...
【代码随想录训练营】【Day 65】【图论-2】| 卡码 99
【代码随想录训练营】【Day 65】【图论-2】| 卡码 99 需强化知识点 深度搜索和广度搜索 题目 99. 岛屿数量 思想:遍历到为1的节点,再搜索标记,每遇到新的陆地节点,增加计数 深度搜索广度搜索:此处用 [] 作为待遍…...

【动态规划】139. 单词拆分
139. 单词拆分 难度:中等 力扣地址:https://leetcode.cn/problems/word-break/description/ 问题描述 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字…...
【C++】空指针访问成员函数
空指针访问成员函数 C中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针 如果用到this指针,需要加以判断保证代码的健壮性 class Animal { public:void fun1() {//正常的成员函数}void fun2() {if (this NULL) {return;//如果没有这个…...
Linux的IO易错点总结
本文主要记录IO的一些易错操作。 阻塞IO和非阻塞IO,一般都是针对数据读取的,因为write是主动行为,不存在阻塞这一说。 非阻塞式IO,一般都要配合while轮询来读取数据。 IO多路复用 当只检测一路IO的时候,和普通IO的作…...
【Android面试八股文】说一说你对Android中的Context的理解吧
文章目录 一、Context是什么?1.1 主要功能和用途1.2 如何获取 Context 实例?1.3 注意事项二、Context 类的层次结构三、Context的数量四、Context的注意事项五、Android 中有多少类型的 Context,它们有什么区别 ?六、Contextlmpl实例是什么时候生成的,在 Activity 的 oncr…...
AI在音乐创作中的角色:创造还是毁灭?
目录 一、基本情况介绍 二、近期新闻 三、AI生成音乐方面的商业模式 四、人工智能和音乐人可能的合作模式 五、人们如何借助AI来创作音乐 六、人工智能在创意产业引发的伦理道德问题 七、如何平衡技术发展与提高人类创造积极性的关系? 总结 一、基本情况介绍…...

[深入理解DDR] 总目录
依公知及经验整理,原创保护,禁止转载。 专栏 《深入理解DDR》 蓝色的是传送门,点击链接即可到达指定文章。 图。 DDR 分类 导论 [RAM] DRAM 导论:DDR4 | DDR5 | LPDDR5 | GDRR6 | HBM 应运而生 运存与内存?内存与存…...

模板方法模式在金融业务中的应用及其框架实现
引言 模板方法模式(Template Method Pattern)是一种行为设计模式,它在一个方法中定义一个算法的框架,而将一些步骤的实现延迟到子类中。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。在金融业务中ÿ…...
leetcode347.前k个高频元素
leetcode347.前k个高频元素 给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例 1: 输入: nums [1,1,1,2,2,3], k 2 输出: [1,2] 示例 2: 输入: nums [1], k 1 输出: [1] 优先队列法 struct hash_…...

c++(二)
1. 类和对象 1.1. 封装 封装的意义 将属性和行为作为一个整体,表现生活中的事物;将属性和行为加以权限控制 public -> 公共权限:类内可以访问,类外也可以访问protected -> 保护权限:类内可以访问,…...

基于PHP的初中数学题库管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的初中数学题库管理系统 一 介绍 此初中数学题库管理系统基于原生PHP开发,数据库mysql,系统角色分为学生,教师和管理员。(附带参考设计文档) 技术栈:phpmysqlphpstudyvscode 二 功能 …...

WDG看门狗
1 WDG 1.1 简介 WDG是看门狗定时器(Watchdog Timer)的缩写,它是一种用于计算机和嵌入式系统中的定时器,用来检测和恢复系统故障。 看门狗就像是一个忠诚的宠物狗,它时刻盯着你的程序,确保它们正常运行。…...

zabbix server client 安装配置
Zabbix Server 采用源码包部署,数据库采用 MySQL8.0 版本,zabbix-web 使用 nginxphp 来实现。具体信息如下: 软件名 版本 安装方式 Zabbix Server 6.0.3 源码安装 Zabbix Agent 6.0.3 源码安装 MySQL 8.0.28 yum安装 Nginx 1.20…...

Unity关于Addressables.Release释放资源内存问题
前言 最近在编写基于Addressables的资源管理器,对于资源释放模块配合MemoryProfiler进行了测试,下面总结下测试Addressables.Release的结论。 总结 使用Addressables.Release释放资源时,通过MemoryProfiler检查内存信息发现加载的内容还在…...

运算放大器(运放)带宽和带宽平坦度
运算放大器带宽和带宽平坦度 电压反馈型运算放大器的带宽 下图1显示电压反馈型运算放大器的开环频率响应。有两种可能:图1A是最常见的情况,高直流增益以6dB/倍频程从极低频率下降至单位增益,也就是典型的单极点响应。相比之下,图…...
npm常用命令使用与事件案例
概述 npm(Node Package Manager)是一个JavaScript编程语言的包管理器,用于Node.js应用程序。它允许用户安装、共享和管理具有重复使用价值的代码(包),这些代码可以是库、工具或应用程序。 npm常用命令详解…...
Spring Boot中的定时任务调度
Spring Boot中的定时任务调度 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨如何在Spring Boot应用中实现定时任务调度,这在实际…...

Hadoop3:MapReduce中的ETL(数据清洗)
一、概念说明 “ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL一词较常用在数据仓库&#…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...

从零开始了解数据采集(二十八)——制造业数字孪生
近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...