【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一词较常用在数据仓库&#…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...