微信小程序-3

页面导航

声明式导航

基本概念

  • 在页面上声明一个 导航组件
  • 通过点击 组件实现页面跳转

具体演示

  • 无参写法
html 复制代码
<navigator url="/pages/list/list" open-type="switchTab">导航到信息列表</navigator>
  • 含参写法

    <navigator url="/pages/list/list?name=zs&age=28" open-type="switchTab">导航到信息列表</navigator>

后退导航

html 复制代码
<navigator open-type="navigateBack" delta="1">返回到上一页</navigator>

编程式导航

基本概念

  • 调用小程序的导航 API,实现页面的跳转

具体演示

  • index.js(无参写法)
javascript 复制代码
Page({
  // 通过 wx.switchTab(...),跳转到 tabBar 页面
  // 如果想要跳转到非tabBar页面(即普通页面),请使用 wx.navigateTo(...)
  goto() {
    wx.switchTab({
      url: '/pages/list/list',
    })
  }
})
  • index.js(含参写法)

    Page({
    // 通过 wx.switchTab(...),跳转到 tabBar 页面
    // 如果想要跳转到非tabBar页面(即普通页面),请使用 wx.navigateTo(...)
    goto() {
    wx.switchTab({
    url: '/pages/list/list?name=zs&age=28',
    })
    }
    })

  • index.wxml

html 复制代码
<button bindtap="goto">跳转</button>

后退导航

  • index.wxml
html 复制代码
<button bindtap="gotoBack">后退</button>
  • index.js
javascript 复制代码
Page({
	// 后退到上一页
	gotoBack() {
		wx.navigateBack()
	}
})

接收导航参数

无论是 声明式导航 还是 编程式导航,都是通过下面方式进行接收参数

  • index.js
javascript 复制代码
Page({
	// 生命周期函数------监听页面加载
	onLoad: function (options) {
		console.log(options)	// 输出传递过来的参数
	}
})

使用导航参数

Page({

	// 页面的初始数据
	data: {
		query: {}	// 导航传递过来的参数对象
	}
	
	// 生命周期函数------监听页面加载
	onLoad: function (options) {
		console.log(options)	// 输出传递过来的参数
		this.setData({
			query: options
		})
	}
})

页面事件

下拉刷新事件

启用事件

  • 方式一:全局开启下拉刷新

    在 app.json 的 window 节点中,将 enablePullDownRefresh 设置为 true

  • 方式二:局部开启下拉刷新(推荐使用)

    在页面的 .json 配置文件中,将 enablePullDownRefresh 设置为 true

配置样式

  • backgroundColor 用来配置下拉刷新窗口的背景颜色,仅支持16进制的颜色值
  • backgroundTextStyle 用来配置下拉刷新 loading 的样式,仅支持 dark 和 light

监听事件

javascript 复制代码
Page({
	// 页面相关事件处理函数------监听用户下拉动作
	onPullDownRefresh: function () {
		console.log('触发了index页面的下拉刷新')
	}
})

停止效果

当处理完下拉刷新后,下拉刷新的 loading 效果会一直显示,不会主动消失,所以需要手动隐藏 loading 效果

Page({
	// 页面相关事件处理函数------监听用户下拉动作
	onPullDownRefresh: function () {
		console.log('触发了index页面的下拉刷新')
	}
	
	// 当完成需求后,调用此函数,关闭下拉刷新的效果
	wx.stopPullDownRefresh()
})

上拉触底事件

概念:手指在屏幕上拉滑动,加载更多数据

监听事件

javascript 复制代码
Page({
	// 页面上拉触底事件的处理函数
	onReachBottom: function () {
		console.log('触发了上拉触底事件')
	}
})

触底距离

概念:上拉触底距离,指的是触发"上拉触底事件"时,滚动条距离页面底部的距离

  • 小程序默认触底距离是 50px
  • 可以在 .json 配置文件中,通过 onReachBottomDistance 属性来配置上拉触底的距离

全局的 app.json 或者 index.json 配置如下内容:

json 复制代码
{
	"onReachBottomDistance": 150
}

生命周期

生命周期函数

概念:生命周期函数是由小程序框架提供的内置函数,会伴随生命周期,自动按次序执行

作用:允许程序员在特定的时间点,执行某些特定的操作(例如:页面刚加载时,可以在onLoad生命周期函数中初始化页面的数据)

分类:分为小程序层面的 应用的生命周期函数 和 页面层面的 页面的生命周期函数

应用的生命周期函数

  • app.js
javascript 复制代码
App({
	// 小程序初始化完成时,执行此函数,全局只触发一次,可以做一些初始化的工作
	onLaunch: function(options) {...},
	
	// 小程序启动,或者从手机后台进入前台显示时候触发
	onShow: function(options) {...},
	
	// 小程序从前台进入手机后台时候触发
	onHide: function() {...}
})

页面的生命周期函数

  • index.js

    Page({
    onLoad : function(options) {...}, // 监听页面加载,一个页面只调用1次
    onShow : function() {...}, // 监听页面显示
    onReady : function() {...}, // 监听页面初次渲染完成,一个页面只调用1次
    onHide : function() {...}, // 监听页面隐藏
    onUnload : function() {...} // 监听页面卸载,一个页面只调用1次
    })

wxs 脚本

认识 wxs

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

wxs 和 JavaScript 的关系

  • wxs 有自己的数据类型

    number、string、boolean、object(对象类型)、function、array、date、regexp(正则)

  • wxs 不支持类似于 ES6 及以上的语法形式

    不支持:let、const、解构赋值、展开运算符、箭头函数、对象属性简写...
    支持:var定义变量、普通 function 函数等类似于 ES5 的语法

  • wxs 遵循 CommonJS 规范

    module 对象
    require() 函数
    module.exports 对象

应用场景

  • wxs 典型的应用常见就是充当"过滤器",经常配合 Mustache 模板语法进行使用,例如:
html 复制代码
<view>{{ m1.toUpper(username) }}</view>
  • 但是,在 wxs 中定义的函数不能作为组件的事件回调函数,例如下面的用法是错误的:
html 复制代码
<button bindtap="m2.toLower">按钮</button>

隔离性

隔离性指的是 wxs 的运行环境和其他 JavaScript 代码是隔离的:

  1. wxs 不能调用 js 中定义的函数
  2. wxs 不能调用小程序提供的 API

运行速度

在 iOS 设备上,小程序内的 WXS 会比 JavaScript 代码快 2 ~ 20 倍
在 Android 设备上,二者的运行效率无差异

内嵌的 wxs 脚本

  • index.js
javascript 复制代码
Page({
  // 页面的初始数据
  data: {
    username: 'zs'
  }
})
  • index.wxml
html 复制代码
<view>{{ m1.toUpper(username) }}</view>

<wxs module="m1">
  // 将文本转换为大写形式:zs => ZS
  module.exports.toUpper = function(str) {
    return str.toUpperCase()
  }
</wxs>

外联的 wxs 脚本

javascript 复制代码
// index.wxs 文件

function toLower(str) {
	return str.toLowerCase()
}

module.exports = {
    toLower: toLower
}

使用外联的 wxs 脚本

  • index.wxml
html 复制代码
<!-- 调用 m2 模块中的方法 -->
<view>{{ m2.toLower(country) }}</view>

<!-- 引用外联的 tool.wxs 脚本,并命名为 m2 -->
<wxs src="../../utils/tool.wxs" module="m2"></wxs>
相关推荐
李宥小哥2 小时前
微信小程序07-开发进阶
微信小程序·小程序·notepad++
2401_8459375313 小时前
PHP一键约课高效健身智能健身管理系统小程序源码
微信·微信小程序·小程序·微信公众平台·微信开放平台
程序员入门进阶15 小时前
基于微信小程序的科创微应用平台设计与实现+ssm(lw+演示+源码+运行)
微信小程序·小程序
计算机源码社1 天前
分享一个基于微信小程序的居家养老服务小程序 养老服务预约安卓app uniapp(源码、调试、LW、开题、PPT)
android·微信小程序·uni-app·毕业设计项目·毕业设计源码·计算机课程设计·计算机毕业设计开题
双普拉斯1 天前
微信小程序点赞动画特效实现
nginx·微信小程序·notepad++
程序员阿龙1 天前
【2025】基于微信小程序的网上点餐系统设计与实现、基于微信小程序的智能网上点餐系统、微信小程序点餐系统设计、智能点餐系统开发、微信小程序网上点餐平台设计
微信小程序·小程序·毕业设计·订单管理·在线点餐·订单跟踪·在线支付
Angus-zoe1 天前
uniapp+vue+微信小程序实现侧边导航
vue.js·微信小程序·uni-app
开利网络2 天前
综合探索数字化转型的奥秘与前景
运维·微信小程序·自动化·产品运营·数字化营销
张人玉2 天前
微信小程序开发——比较两个数字大小
微信小程序·小程序
计算机学姐2 天前
基于微信小程序的食堂点餐预约管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·mybatis