微信小程序之页面导航、生命周期和WXS脚本

news2024/11/24 16:44:51

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…

文章目录

  • 前言
  • 一、页面导航
    • 1、什么是页面导航
    • 2、小程序中实现页面导航的两种方式
  • 二、页面导航 - 声明式导航
    • 1、导航到 tabBar 页面
    • 2、导航到非 tabBar 页面
    • 3、后退导航
  • 三、页面导航 - 编程式导航
    • 1、导航到 tabBar 页面
    • 2、导航到非 tabBar 页面
    • 3、后退导航
  • 四、页面导航 - 导航传参
    • 1、声明式导航传参
    • 2、编程式导航传参
    • 3、在 onLoad 中接收导航参数
  • 五、生命周期
    • 1、什么是生命周期
    • 2、生命周期的分类
    • 3、什么是生命周期函数
    • 4、生命周期函数的分类
    • 5、应用的生命周期函数
    • 6、页面的生命周期函数
  • 六、WXS 脚本 - 概述
    • 1、什么是 wxs
    • 2、wxs 的应用场景
    • 3、wxs 和 JavaScript 的关系*
  • 七、WXS 脚本 - 基础语法
    • 1、内嵌 wxs 脚本
    • 2、定义外联的 wxs 脚本
    • 3、使用外联的 wxs 脚本
  • 八、WXS 脚本 - WXS 的特点
    • 1、与 JavaScript 不同
    • 2、不能作为组件的事件回调
    • 3、隔离性
    • 4、性能好
  • 总结


前言

一、页面导航
1、什么是页面导航
2、小程序中实现页面导航的两种方式
二、页面导航 - 声明式导航
1、导航到 tabBar 页面
2、导航到非 tabBar 页面
3、后退导航
三、页面导航 - 编程式导航
1、导航到 tabBar 页面
2、导航到非 tabBar 页面
3、后退导航
四、页面导航 - 导航传参
1、声明式导航传参
2、编程式导航传参
3、在 onLoad 中接收导航参数
五、生命周期
1、什么是生命周期
2、生命周期的分类
3、什么是生命周期函数
4、生命周期函数的分类
5、应用的生命周期函数
6、页面的生命周期函数
六、WXS 脚本 - 概述
1、什么是 wxs
2、wxs 的应用场景
3、wxs 和 JavaScript 的关系*
七、WXS 脚本 - 基础语法
1、内嵌 wxs 脚本
2、定义外联的 wxs 脚本
3、使用外联的 wxs 脚本
八、WXS 脚本 - WXS 的特点
1、与 JavaScript 不同
2、不能作为组件的事件回调
3、隔离性
4、性能好


一、页面导航

1、什么是页面导航

页面导航指的是页面之间的相互跳转。例如,浏览器中实现页面导航的方式有如下两种:

<a> 链接
location.href

2、小程序中实现页面导航的两种方式

  • 声明式导航
    • 在页面上声明一个 导航组件
    • 通过点击 组件实现页面跳转
  • 编程式导航
    • 调用小程序的导航 API,实现页面的跳转

二、页面导航 - 声明式导航

1、导航到 tabBar 页面

tabBar 页面指的是被配置为 tabBar 的页面。
在使用 组件跳转到指定的 tabBar 页面时,需要指定 url 属性和 open-type 属性,其中:

  • url 表示要跳转的页面的地址,必须以 / 开头
  • open-type 表示跳转的方式,必须为 switchTab

示例代码如下:
在这里插入图片描述
当点击模拟器中的导航到消息页面的时候会直接跳转到message页面。
点击后页面:
在这里插入图片描述

2、导航到非 tabBar 页面

非 tabBar 页面指的是没有被配置为 tabBar 的页面。
在使用 组件跳转到普通的非 tabBar 页面时,则需要指定 url 属性和 open-type 属性,其中:

  • url 表示要跳转的页面的地址,必须以 / 开头
  • open-type 表示跳转的方式,必须为 navigate

在这里插入图片描述
当点击模拟器中的导航到info页面的时候会直接跳转到info页面。
点击后页面:
在这里插入图片描述
注意:为了简便,在导航到非 tabBar 页面时,open-type=“navigate” 属性可以省略。

3、后退导航

如果要后退到上一页面或多级页面,则需要指定 open-type 属性和 delta 属性,其中:

  • open-type 的值必须是 navigateBack,表示要进行后退导航
  • delta 的值必须是数字,表示要后退的层级
    示例代码如下:
    在这里插入图片描述
    点击后页面显示
    在这里插入图片描述
    注意:为了简便,如果只是后退到上一页面,则可以省略 delta 属性,因为其默认值就是 1。

三、页面导航 - 编程式导航

1、导航到 tabBar 页面

调用 wx.switchTab(Object object) 方法,可以跳转到 tabBar 页面。其中 Object 参数对象的属性列表如下
在这里插入图片描述
示例代码如下:
在这里插入图片描述

<button bindtap="gotoMessage">跳转到消息页面</button>
  gotoMessage(){
    wx.switchTab({
      url: '/pages/message/message',
    })
  },

跳转页面后:
在这里插入图片描述

2、导航到非 tabBar 页面

调用 wx.navigateTo(Object object) 方法,可以跳转到非 tabBar 的页面。其中 Object 参数对象的属性列表如下:
在这里插入图片描述
示例代码如下:
在这里插入图片描述

<button bindtap="gotoInfo">跳转到info页面</button>
  gotoInfo(){
    wx.navigateTo({
      url: '/pages/info/info',
    })
  },

跳转页面后:
在这里插入图片描述

3、后退导航

调用 wx.navigateBack(Object object) 方法,可以返回上一页面或多级页面。其中 Object 参数对象可选的属性列表如下:
在这里插入图片描述
示例代码如下:
在这里插入图片描述

<button bindtap="gotoBack">后退</button>
  gotoBack(){
    wx.navigateBack()
  },

跳转页面后:
在这里插入图片描述

四、页面导航 - 导航传参

1、声明式导航传参

navigator 组件的 url 属性用来指定将要跳转到的页面的路径。同时,路径的后面还可以携带参数:

  • 参数与路径之间使用 ? 分隔
  • 参数键与参数值用 = 相连
  • 不同参数用 & 分隔

代码示例如下:
在这里插入图片描述

<navigator url="/pages/info/info?name=gedeshidai&age=21">跳转到info页面</navigator>

跳转页面后:
在这里插入图片描述

2、编程式导航传参

调用 wx.navigateTo(Object object) 方法跳转页面时,也可以携带参数,代码示例如下:
在这里插入图片描述

<button bindtap="gotoInfo2">跳转到info页面</button>
gotoInfo2(){
  wx.navigateTo({
    url: '/pages/info/info?name=gedeshidai&gender=男',
  })
},

跳转页面后:
在这里插入图片描述

3、在 onLoad 中接收导航参数

通过声明式导航传参或编程式导航传参所携带的参数,可以直接在 onLoad 事件中直接获取到,示例代码如下

info.js页面

  onLoad(options) {
    //options就是导航传递过来的参数对象
    console.log(options)
  },

在这里插入图片描述
在这里插入图片描述

五、生命周期

1、什么是生命周期

生命周期(Life Cycle)是指一个对象从创建 -> 运行 -> 销毁的整个阶段,强调的是一个时间段。例如:

  • 张三出生,表示这个人生命周期的开始
  • 张三离世,表示这个人生命周期的结束
  • 中间张三的一生,就是张三的生命周期

我们可以把每个小程序运行的过程,也概括为生命周期:

  • 小程序的启动,表示生命周期的开始
  • 小程序的关闭,表示生命周期的结束
  • 中间小程序运行的过程,就是小程序的生命周期

2、生命周期的分类

在小程序中,生命周期分为两类,分别是:

  • 应用生命周期
    • 特指小程序从启动 -> 运行 -> 销毁的过程
  • 页面生命周期
    • 特指小程序中,每个页面的加载 -> 渲染 -> 销毁的过程

其中,页面的生命周期范围较小,应用程序的生命周期范围较大,如图所示:
在这里插入图片描述

3、什么是生命周期函数

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

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

注意:生命周期强调的是时间段,生命周期函数强调的是时间点。

4、生命周期函数的分类

小程序中的生命周期函数分为两类,分别是:

  • 应用的生命周期函数
    • 特指小程序从启动 -> 运行 -> 销毁期间依次调用的那些函数
  • 页面的生命周期函数
    • 特指小程序中,每个页面从加载 -> 渲染 -> 销毁期间依次调用的那些函数

5、应用的生命周期函数

小程序的应用生命周期函数需要在 app.js 中进行声明,示例代码如下:
在这里插入图片描述

6、页面的生命周期函数

小程序的页面生命周期函数需要在页面的 .js 文件中进行声明,示例代码如下:
在这里插入图片描述

六、WXS 脚本 - 概述

1、什么是 wxs

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

2、wxs 的应用场景

wxml 中无法调用在页面的 .js 中定义的函数,但是,wxml 中可以调用 wxs 中定义的函数。因此,小程序中 wxs 的典型应用场景就是“过滤器”。

3、wxs 和 JavaScript 的关系*

虽然 wxs 的语法类似于 JavaScript,但是 wxs 和 JavaScript 是完全不同的两种语言:

  • wxs 有自己的数据类型
    • number 数值类型、string 字符串类型、boolean 布尔类型、object 对象类型、
    • function 函数类型、array 数组类型、 date 日期类型、 regexp 正则
  • wxs 不支持类似于 ES6 及以上的语法形式
    • 不支持:let、const、解构赋值、展开运算符、箭头函数、对象属性简写、etc…
    • 支持:var 定义变量、普通 function 函数等类似于 ES5 的语法
  • wxs 遵循 CommonJS 规范
    • module 对象
    • require() 函数
    • module.exports 对象

七、WXS 脚本 - 基础语法

1、内嵌 wxs 脚本

wxs 代码可以编写在 wxml 文件中的 标签内,就像 Javascript 代码可以编写在 html 文件中的 script> 标签内一样。
wxml 文件中的每个 标签,必须提供 module 属性,用来指定当前 wxs 的模块名称,方便在 wxml 中访问模块中的成员:
在这里插入图片描述

2、定义外联的 wxs 脚本

wxs 代码还可以编写在以 .wxs 为后缀名的文件内,就像 javascript 代码可以编写在以 .js 为后缀名的文件中一样。示例代码如下:
在这里插入图片描述

3、使用外联的 wxs 脚本

在 wxml 中引入外联的 wxs 脚本时,必须为 标签添加 module 和 src 属性,其中:

  • module 用来指定模块的名称
  • src 用来指定要引入的脚本的路径,且必须是相对路径
    示例代码如下:
    在这里插入图片描述

八、WXS 脚本 - WXS 的特点

1、与 JavaScript 不同

为了降低 wxs(WeiXin Script)的学习成本, wxs 语言在设计时借大量鉴了 JavaScript 的语法。但是本质上,wxs 和 JavaScript 是完全不同的两种语言!

2、不能作为组件的事件回调

wxs 典型的应用场景就是“过滤器”,经常配合 Mustache 语法进行使用,例如:
在这里插入图片描述
但是,在 wxs 中定义的函数不能作为组件的事件回调函数。例如,下面的用法是错误的:
在这里插入图片描述

3、隔离性

隔离性指的是 wxs 的运行环境和其他 JavaScript 代码是隔离的。体现在如下两方面:

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

4、性能好

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

总结

以上就是微信小程序之页面导航、生命周期和WXS脚本的相关知识点,希望对你有所帮助。
积跬步以至千里,积怠惰以至深渊。时代在这跟着你一起努力哦!

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

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

相关文章

机器学习的数据库积累........

https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md ​​​​​​​ 另一个database:&#xff08;网址:Object Detection Made Easy with TensorFlow Hub: Tutorial&#xff09; Object Detection Made Easy with Ten…

【Java Kubernates】Java调用kubernates提交Yaml到SparkOperator

背景 目前查询框架使用的是trino&#xff0c;但是trino也有其局限性&#xff0c;需要准备一个备用的查询框架。考虑使用spark&#xff0c;spark operator也已经部署到k8s&#xff0c;现在需要定向提交spark sql到k8s的sparkoperator上&#xff0c;使用k8s资源执行sql。 对比 …

RCC——使用HSE/HSI配置时钟

RCC 文章目录 前言一、背景二、仿真计算周期 2.1 2.2 三、MCO引脚输出时钟总结 前言 前期疑问&#xff1a;1、RCC是什么意思。 2、最终配好的72M是系统时钟吗&#xff1f; 3、一共有哪些时钟 本文目标&#xff1a;将PLL时钟配置成72M 疑问解答&#xff1a;最终配好的时钟是…

GitLab16.8配置webhooks、Jenkins2.4配置GitLab插件实现持续集成

看本篇文章的前提是已经部署完GItlab和Jenkins服务器&#xff0c;已经可以手动构建成功&#xff0c;并且经过了很多次实践&#xff0c;对这两款软件基本熟悉。 希望大家都能够厚积薄发。 ~~~道理都懂&#xff0c;但有时候做不到&#xff0c;所以还是没真正懂。 前端自动化&am…

【Qt无门槛入门】信号以及信号机制及其常用控件(1)

信号与信号槽 信号源&#xff1a;由哪个控件发出的信号。 信号的类型&#xff1a;用户进行不同的操作&#xff0c;就可能出发不同的信号。 信号处理的方式:槽&#xff08;slot&#xff09;某个对象接收到这个信号之后&#xff0c;就会做一些相关的处理动作。但是Qt对象不会无故…

uniCloud 免费版和商用版

概述 uniCloud为每个开发者提供一个免费的服务空间&#xff0c;更低门槛按量付费是serverless的特色&#xff0c;如果没有消耗硬件资源&#xff0c;就完全不用付款serverless比传统的云主机更便宜传统云主机一旦被攻击&#xff0c;高防价格非常昂贵。而uniCloud无需支付高防费…

零基础学习数学建模——(五)美赛写作指导

本篇博客将详细讲解美赛论文写作。 文章目录 标题摘要目录引言问题背景问题重述前人研究我们的工作 模型假设及符号说明正文问题分析模型建立模型求解结果分析模型检验 模型优缺点及展望模型优缺点模型展望 参考文献及附录参考文献附录 2024年美赛论文新要求 标题 标题要简洁…

Linux使用二进制包安装MySQL

目录 一、软件包下载 二、上传软件包到Linux根目录 1、使用xftp将软件包上传到根目录 2、解压缩 三、准备工作 四、初始化软件 五、设置MySQL的配置文件 六、配置启动脚本 一、软件包下载 官网下载&#xff1a;MySQL :: Download MySQL Community Server 二、上传软件…

Future模式先给您提货单

Future模式是一种设计模式&#xff0c;用于在处理耗时操作时提高程序的响应性。 角色介绍: Main类: 负责向Host发出请求并获取数据的类。 Host类: 负责向请求返回FutureData的实例的类&#xff0c;起到调度的作用。 Data接口: 表示访问数据的方法的接口&#xff0c;由FutureD…

LabVIEW电液比例阀测试系统

电液比例阀与普通阀和伺服阀相比&#xff0c;比例阀展现出显著的耐污染和可靠性特点。为了满足这些比例阀的综合性能测试需求&#xff0c;开发了一种基于LabVIEW软件的电液比例阀综合性能试验台。这个系统不仅能够进行比例压力阀、流量阀和方向阀的性能测试&#xff0c;而且通过…

STM32-LwESP 移植

LwESP 是一个专门解析 Espressif 公司旗下 ESP 系列芯片 AT 指令的开源库&#xff0c;具有以下特性&#xff1a; 支持 Espressif 公司 ESP32, ESP32-C2, ESP32-C3, ESP32-C6 和 ESP8266 芯片。独立平台&#xff0c;采用 C99 标准编写&#xff0c;易于移植。允许不同的配置来优…

前端大厂面试题探索编辑部——第二期

目录 题目 单选题1 题解 关于TCP 关于UDP 单选题2 题解 A选项的HTTP是否是无状态协议 B选项的HTTP支持的方法 C选项的关于HTTP的状态码 D选项HTTP协议的传输格式 题目 单选题1 1.以下哪个描述是关于 TCP 和 UDP 的区别&#xff08;&#xff09; A. TCP 是无连接的…

大创项目推荐 题目:基于python的验证码识别 - 机器视觉 验证码识别

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于pyt…

Deeplearning

Numpy Deep Learning Basic 神经网络&#xff1a; #mermaid-svg-2N27H7C0XPrmd8HP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2N27H7C0XPrmd8HP .error-icon{fill:#552222;}#mermaid-svg-2N27H7C0XPrmd8HP .…

【RTP】webrtc 学习2: webrtc对h264的rtp打包

切片只是拷贝帧的split的各个部分到新的rtp 包的封装中。并没有在rtp包本身标记是否为关键帧FU-A 切片 输入的H.264 数据进行split :SplitNalu SplitNalu : 按照最大1200字节进行切分 切分后会返回一个数组 对于FU-A :split的数据总大小是 去掉一个字节的nalu header size …

Linux系统——点菜名

Linux系统可以点菜啦&#xff01; [rootlocalhost ~]#vim menu1.sh #!/bin/bash sum0 PS3"请输入(1-6):" MENU" 宫保鸡丁 酸菜鱼 鱼香肉丝 佛跳墙 水煮肉片 点菜结束 "select menu in $MENU do case $REPLY in 1) echo $menu 价格是20 let sum20 ;; 2) ec…

spacy分词工具下载指南

分享一下spacy分词工具的下载流程&#xff0c;直接在命令行下载速度慢而且一般都成功不了&#xff0c;所以需要像nltk工具一样离线下载&#xff0c;这里记录一下流程。让有需要的同学少走一些坑。 一、下载spacy 这里下载记得使用国内源哟&#xff0c;速度会快很多&#xff0c…

微信小程序(十九)组件通信(子传父)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.定义触发事件向父组件传输数据 2.父组件绑定绑定触发事件并获取数据 源码&#xff1a; myNav.wxml <view class"navigationBar custom-class" style"padding-top: {{test}}px;">&l…

Elasticsearch安装Head图形插件

一、Google浏览器扩展插件方式 1.安装插件 进入谷歌浏览器应用商店搜索“Elasticsearch Head”,点击链接跳转 点击“添加至Chrome”按钮安装即可。 2.使用插件 在浏览器的插件列表多了个一个放大镜图标 点击“New”新建链接,输入es节点或集群地址。 连接成功 可以进行概括…

LLM之llm-viz:llm-viz(3D可视化GPT风格LLM)的简介、安装和使用方法、案例应用之详细攻略

LLM之llm-viz&#xff1a;llm-viz(3D可视化GPT风格LLM)的简介、安装和使用方法、案例应用之详细攻略 目录 llm-viz的简介 1、LLM可视化 2、CPU模拟&#xff08;WIP&#xff1b;尚未公开&#xff01;&#xff09; llm-viz的安装和使用方法 llm-viz的案例应用 1、三维可视化…