微信小程序 - 视图与逻辑 介绍

文章目录

  • 视图与逻辑
    • 一、页面导航
      • 1、页面导航 - 声明式导航
        • 1.1 导航到tabBar页面
        • 1.2 导航到非tabBar页面
        • 1.3 后退导航
      • 2、页面导航 - 编程式导航
        • 2.1 导航到tabBar页面
        • 2.2 导航到非tabBar页面
        • 2.3 后退导航
      • 3、页面导航 - 导航传参
        • 3.1 声明式导航传参
        • 3.2 编程式导航传参
        • 3.3 在 onLoad 中接收导航参数
    • 二、页面事件
      • 1、页面事件 - 下拉刷新事件
        • 1.1 什么是下拉刷新
        • 1.2 启用下拉刷新
        • 1.3 配置下拉刷新窗口的样式
        • 1.4 监听页面的下拉刷新事件
        • 1.5 停止下拉刷新的效果
      • 2、页面事件 - 上拉触底事件
        • 2.1 什么是上拉触底
        • 2.2 监听页面的上拉触底事件
        • 2.3 配置上拉触底距离
    • 三、生命周期
      • 1、什么是生命周期
      • 2、生命周期的分类
      • 3、什么是生命周期函数
      • 4、生命周期函数的分类
        • 4.1 应用生命周期函数
        • 4.2 页面生命周期函数
      • 5、应用的生命周期函数
      • 6、页面的生命周期函数
    • 四、WXS脚本
      • 1、WXS 脚本 - 概述
        • 1.1 什么是 wxs
        • 1.2 wxs 的应用场景
        • 1.3 wxs 和 JavaScript 的关系*
      • 2、WXS 脚本 - 基础语法
        • 2.1 内嵌 wxs 脚本
        • 2.2 定义外联的 wxs 脚本
        • 2.3 使用外联的 wxs 脚本
      • 3、WXS 脚本 - WXS 的特点
        • 3.1 与 JavaScript 不同
        • 3.2 不能作为组件的事件回调
        • 3.3 隔离性
        • 3.4 性能好

视图与逻辑

一、页面导航

  1. 什么是页面导航

在小程序开发中,页面导航是指在不同页面之间进行切换的过程。通过页面导航,用户可以在小程序中流畅地浏览不同的内容和功能模块。

  1. 小程序中实现页面导航的两种方式

在小程序中,实现页面导航有两种主要方式:声明式导航和编程式导航。

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

声明式导航是通过在页面的配置中声明导航信息来实现的,开发者只需在页面的配置文件中定义导航相关的信息,小程序框架会自动处理导航逻辑。

1.1 导航到tabBar页面

在声明式导航中,可以通过使用 <navigator> 组件来实现导航到tabBar页面,使用 open-type='switchTab' 来切换到底部导航栏的页面。

<!-- pageA.wxml -->
<navigator url='/pages/tab1/index' open-type='switchTab'>导航到Tab 1页面</navigator>
1.2 导航到非tabBar页面

同样,在声明式导航中,可以使用 <navigator> 组件来导航到非tabBar页面。

<!-- pageB.wxml -->
<navigator url='/pages/otherPage/index'>导航到其他页面</navigator>
1.3 后退导航

声明式导航也支持后退导航,用户可以通过系统的返回按钮或手势返回上一页面。

<!-- pageC.wxml -->
<navigator open-type='navigateBack'>后退导航</navigator>

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

编程式导航是通过调用小程序框架提供的API来实现页面导航,开发者可以在代码中灵活控制导航逻辑。

2.1 导航到tabBar页面

与声明式导航类似,编程式导航也允许开发者通过调用API导航到tabBar页面。

// pageA.js
wx.switchTab({url: '/pages/tab1/index'
});
2.2 导航到非tabBar页面

编程式导航同样支持导航到非tabBar页面,开发者可以在代码中指定跳转的页面路径。

// pageB.js
wx.navigateTo({url: '/pages/otherPage/index'
});
2.3 后退导航

通过编程式导航,开发者可以实现更精细的后退导航控制,例如在特定条件下执行后退操作。

// pageC.js
wx.navigateBack({delta: 1
});

3、页面导航 - 导航传参

在开发过程中,有时候需要在不同页面之间传递参数。页面导航支持导航传参,分为声明式导航和编程式导航两种方式。

3.1 声明式导航传参

通过在页面路径中配置参数,实现声明式导航时可以传递参数给目标页面。

<!-- pageD.wxml -->
<navigator url='/pages/paramPage/index?param1=value1&param2=value2'>带参数导航</navigator>
3.2 编程式导航传参

在编程式导航中,开发者可以通过API调用传递参数给目标页面。

// pageE.js
wx.navigateTo({url: '/pages/paramPage/index?param1=value1&param2=value2'
});
3.3 在 onLoad 中接收导航参数

在目标页面的 onLoad 生命周期中,可以通过获取参数对象来获取传递过来的导航参数。

// paramPage.js
Page({onLoad: function(options) {console.log(options.param1); // 输出: value1console.log(options.param2); // 输出: value2}
});

以上是关于小程序中页面导航的基本介绍,下一节将深入讨论页面事件的处理方式。

二、页面事件

1、页面事件 - 下拉刷新事件

1.1 什么是下拉刷新

下拉刷新是一种用户在页面顶部向下滑动时触发的事件,通常用于实现页面的数据更新或重新加载。

1.2 启用下拉刷新

要启用下拉刷新功能,需要在页面配置文件中设置 enablePullDownRefreshtrue

// pageA.json
{"navigationBarTitleText": "Page A","enablePullDownRefresh": true
}

除了在页面配置中开启全局下拉刷新,还可以在页面中使用 <scroll-view> 组件实现局部的下拉刷新。在 <scroll-view> 组件中设置 bindscrolltoupper 事件监听滚动到顶部时触发的下拉刷新。

<!-- pageB.wxml -->
<scroll-view bindscrolltoupper="onPullDownRefresh" style="height: 100vh;"><!-- 页面内容 -->
</scroll-view>
1.3 配置下拉刷新窗口的样式

可以通过在页面配置中设置 backgroundTextStylebackgroundColor 来配置下拉刷新窗口的样式。

// pageA.json
{"navigationBarTitleText": "Page A","enablePullDownRefresh": true,"backgroundTextStyle": "dark","backgroundColor": "#f8f8f8"
}
1.4 监听页面的下拉刷新事件

在页面的逻辑文件中,通过监听页面的 onPullDownRefresh 事件来监听下拉刷新的操作。

// pageA.js
Page({onPullDownRefresh: function() {// 执行下拉刷新的逻辑console.log("下拉刷新事件触发");}
});
1.5 停止下拉刷新的效果

在下拉刷新的逻辑执行完毕后,需要调用 wx.stopPullDownRefresh() 来停止下拉刷新的效果。

// pageA.js
Page({onPullDownRefresh: function() {// 执行下拉刷新的逻辑console.log("下拉刷新事件触发");// 停止下拉刷新的效果wx.stopPullDownRefresh();}
});

2、页面事件 - 上拉触底事件

2.1 什么是上拉触底

上拉触底是一种用户在页面底部向上滑动时触发的事件,通常用于实现分页加载更多数据。

2.2 监听页面的上拉触底事件

在页面的逻辑文件中,通过监听页面的 onReachBottom 事件来监听上拉触底的操作。

// pageA.js
Page({onReachBottom: function() {// 执行上拉触底的逻辑console.log("上拉触底事件触发");}
});
2.3 配置上拉触底距离

可以通过在页面配置中设置 onReachBottomDistance 来配置上拉触底的距离,即当距离底部指定距离时触发上拉触底事件。

// pageA.json
{"navigationBarTitleText": "Page A","onReachBottomDistance": 50
}

以上是关于小程序中页面事件的详细介绍,全局和局部下拉刷新的使用方式,以及上拉触底事件的监听和配置。下一节将讨论页面的生命周期。

三、生命周期

1、什么是生命周期

生命周期是指一个小程序从被创建到被销毁的整个过程。在这个过程中,小程序会经历不同的阶段和事件,开发者可以通过生命周期函数来执行相应的逻辑操作。

2、生命周期的分类

小程序的生命周期可以分为两类:应用生命周期和页面生命周期。

  • 应用生命周期: 小程序整体的生命周期,包括小程序的启动、前台运行、后台运行和销毁。

  • 页面生命周期: 单个页面的生命周期,包括页面的加载、显示、初次渲染、再次渲染、隐藏和卸载。

3、什么是生命周期函数

生命周期函数是在特定时机会被自动触发的函数,开发者可以在这些函数中编写相应的逻辑代码。在小程序中,生命周期函数包括应用生命周期函数和页面生命周期函数。

4、生命周期函数的分类

4.1 应用生命周期函数
  • onLaunch(options): 当小程序启动时触发,全局只触发一次。

  • onShow(options): 当小程序进入前台显示状态时触发。

  • onHide(): 当小程序进入后台状态时触发。

4.2 页面生命周期函数
  • onLoad(options): 当页面加载时触发,一次生命周期中只会触发一次。

  • onShow(): 当页面显示时触发。

  • onReady(): 当页面初次渲染完成时触发。

  • onHide(): 当页面隐藏时触发。

  • onUnload(): 当页面卸载时触发。

5、应用的生命周期函数

应用的生命周期函数是指在整个小程序运行过程中会被触发的函数,可以在 app.js 文件中定义。

// app.js
App({onLaunch: function(options) {// 小程序启动时触发},onShow: function(options) {// 小程序进入前台时触发},onHide: function() {// 小程序进入后台时触发}
});

6、页面的生命周期函数

页面的生命周期函数是指在页面加载、显示、渲染和卸载等不同阶段会被触发的函数,可以在每个页面的 pageX.js 文件中定义。

// pageA.js
Page({onLoad: function(options) {// 页面加载时触发},onShow: function() {// 页面显示时触发},onReady: function() {// 页面初次渲染完成时触发},onHide: function() {// 页面隐藏时触发},onUnload: function() {// 页面卸载时触发}
});

以上是关于小程序生命周期的基本介绍,开发者可以根据实际需求在不同的生命周期函数中编写相应的业务逻辑。

四、WXS脚本

1、WXS 脚本 - 概述

1.1 什么是 wxs

WXS(WeiXin Script)是小程序的一种脚本语言,用于在 WXML 中对数据进行逻辑处理。它类似于 JavaScript,但有一些特定的语法和限制。

1.2 wxs 的应用场景

WXS 主要用于处理小程序页面中的逻辑,例如数据的计算、处理字符串等。它可以被用在 WXML 中进行数据绑定和逻辑运算。

1.3 wxs 和 JavaScript 的关系*

WXS 与 JavaScript 有相似之处,但并不完全相同。WXS 主要用于小程序,它的语法和能力受到一些限制,使其更适合于小程序环境下的使用。

2、WXS 脚本 - 基础语法

2.1 内嵌 wxs 脚本

在 WXML 文件中,可以使用 <wxs> 标签来嵌入 wxs 脚本。内嵌的 wxs 脚本可以直接在 WXML 中进行调用。

<!-- pageA.wxml -->
<wxs module="m1">var add = function(a, b) {return a + b;}module.exports.add = add;
</wxs><view>{{ m1.add(1, 2) }}</view>
2.2 定义外联的 wxs 脚本

也可以将 wxs 脚本定义在外部文件,使用 <wxs> 标签的 src 属性引入外联的 wxs 脚本。

<!-- util.wxs -->
var multiply = function(a, b) {return a * b;
}
module.exports.multiply = multiply;<!-- pageB.wxml -->
<wxs src="./util.wxs" module="m2"></wxs><view>{{ m2.multiply(3, 4) }}</view>
2.3 使用外联的 wxs 脚本

外联的 wxs 脚本可以在 WXML 中通过模块的方式调用。

<!-- pageC.wxml -->
<wxs src="/utils/util.wxs" module="m3"></wxs><view>{{ m3.multiply(5, 6) }}</view>

3、WXS 脚本 - WXS 的特点

3.1 与 JavaScript 不同

WXS 在语法和功能上有一些差异,不同于 JavaScript。开发者在使用 WXS 时需注意其特殊的语法和限制。

3.2 不能作为组件的事件回调

WXS 不能作为组件的事件回调函数,不能直接绑定在组件的事件属性上。

3.3 隔离性

WXS 具有独立的作用域,不受页面的其他脚本影响。它的变量和函数不会与页面的 JavaScript 全局作用域发生冲突。

3.4 性能好

由于 WXS 是小程序专用的脚本语言,它在小程序环境下运行更高效,具有较好的性能。

以上是关于 WXS 脚本的基本介绍,开发者可以根据实际需求使用 WXS 在小程序中进行数据处理和逻辑运算。

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

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

相关文章

ZZULIOJ 1125: 上三角矩阵的判断

题目描述 编写程序&#xff0c;输入一个正整数n&#xff08;1<n<10&#xff09;和n阶方阵a中的元素&#xff0c;如果a是上三角矩阵&#xff0c;输出“YES”&#xff0c;否则&#xff0c;输出“NO”。 上三角矩阵即主对角线以下&#xff08;不包括主对角线&#xff09;的…

Vue中v-if与v-show区别详解

✨ 专栏介绍 在当今Web开发领域中&#xff0c;构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架&#xff0c;正是为了满足这些需求而诞生。它采用了MVVM架构模式&#xff0c;并通过数据驱动和组件化的方式&#xff0c;使…

目标导向理论 : 一种高效,改变人做事精神状态,决定成事概率的行为方式

百科对目标导向理论的解释 目标导向理论是激励理论的一种。它是由豪斯提出来的&#xff0c;目标导向理论的基本出发点是要求领导者排除走向目标的障碍&#xff0c;使其顺利达到目标&#xff0c;在此过程中&#xff0c;给予职工满足多种多样需要的机会。 [1]   目标导向理论认…

寻找最富裕的小家庭 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 在一棵树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭现给你一棵树,请计算出最富裕的小家庭的财富和。 输入描述 第一行为一个数N,…

关于tex中的表格设置

文章目录 控制表格列宽和行高控制表格列宽的同时实现居中tex中多表格排列单元格的合并与分割对单个单元格进行操作 控制表格列宽和行高 将下面的代码放在table环境内&#xff0c;放在tabular环境外 调整表格宽度和高度&#xff1a; \resizebox{\textwidth}{2cm}{%第一个{}是表…

背包~~~~~~~~~3478:【例86.3】 完全背包问题

【题目描述】 设有n&#xfffd;种物品&#xff0c;每种物品有一个重量及一个价值。但每种物品的数量是无限的&#xff0c;同时有一个背包&#xff0c;最大载重量为M&#xfffd;&#xff0c;今从n&#xfffd;种物品中选取若干件(同一种物品可以多次选取)&#xff0c;使其重量…

C语言之从浅入深一步一步全方位理解指针【附笔试题】

文章目录 前言从浅入深理解指针《第一阶段》一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符&#xff08;&&#xff09; 三、指针变量和解引用操作符&#xff08;*&#xff09;3.1 指针变量3.2 如何拆解指针类型3.3 解引用操作符 四、指…

设计模式之解释器模式【行为型模式】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档> 学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某…

合并多个大语言模型文件的方法

合并多个大语言模型文件的方法 1. 合并多个大语言模型文件的方法 1. 合并多个大语言模型文件的方法 运行下面命令&#xff0c; &#xff08;示例&#xff09;Linux and macOS: cat swallow-70b-instruct.Q6_K.gguf-split-* > swallow-70b-instruct.Q6_K.gguf && …

为了这口醋,包的这饺子。为了Selenium,学有限的CSS,逐步替换XPATH

Learn about CSS rules and pseudo-classes to help you move your XPATH locators to CSS. 1. 最基本IdElement TypeDirect ChildChild or Sub-ChildClass 2. 深入一点Next SiblingAttribute ValuesChoosing a Specific Match Sub-String Matches 3 参考资料 In order for Sel…

mybatis核心配置文件介绍

mybatis核心配置文件 1. properties配置介绍 properties标签&#xff1a;加载外部的资源配置文件 ​ 属性&#xff1a;resource 指定要引入的配置文件路径 ​ 在核心配置文件中&#xff0c;通过&#xff1a;${key}方式引入外部配置文件的数据 jdbc.peroperties 的文件内容…

transfomer中Multi-Head Attention的源码实现

简介 Multi-Head Attention是一种注意力机制,是transfomer的核心机制. Multi-Head Attention的原理是通过将模型分为多个头&#xff0c;形成多个子空间&#xff0c;让模型关注不同方面的信息。每个头独立进行注意力运算&#xff0c;得到一个注意力权重矩阵。输出的结果再通过…

SVN切换账户

前言&#xff08;svn切换&#xff09; 本文章简单写下SVN账户切换操作 linux 1.删除目录 ~/.subversion/auth/ 下的所有文件。 2.再次操作svn时可重新输入用户名和密码。 windows (1)在工程中单击右键,单击"TortoiseSVN"。 (2)选择"Setting"。 (3)选择&quo…

C语言实现快排核心思想(双指针法)

核心代码&#xff1a; 这就是每一趟快排的实现代码&#xff0c;由上面的动图&#xff0c;我们能知道前后指针法的核心是玩好cur和prev这两个指针&#xff0c;具体的逻辑是cur找比key小的值&#xff0c;找到就prev&#xff0c;然后prev和cur的值就进行交换&#xff0c;但是总不能…

统信UOS操作系统上禁用IPv6

原文链接&#xff1a;统信UOS操作系统上禁用IPv6 hello&#xff0c;大家好啊&#xff01;继之前我们讨论了如何在麒麟KYLINOS上禁用IPv6之后&#xff0c;今天我要给大家带来的是在统信UOS操作系统上禁用IPv6的方法。IPv6是最新的网络通信协议&#xff0c;但在某些特定的网络环境…

PiflowX-DorisWrite组件

DorisWrite组件 组件说明 往Doris存储写入数据。 计算引擎 flink 组件分组 doris 端口 Inport&#xff1a;默认端口 outport&#xff1a;默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子fenodesFenodes“”无是Doris FE http地址&#xff0c; 支持多个…

基于企业级SaaS低代码平台的协同制造产品解决方案

万界星空科技低代码平台提供的MES&#xff0c;WMS&#xff0c;QMS等应用&#xff0c;是助力企业从数字化工厂向数字化企业升级的落地管道及载体&#xff0c;能帮助企业在数字化转型的过程中&#xff0c;实现制造企业与其供应链的协同制造。从订单发出、供应商确认、供应商生产、…

数据结构时间复杂度与空间复杂度

文章目录 引入算法 1、时间复杂度1.概念2.大O渐进表示法3.常见时间复杂度计算举例 2、空间复杂度1.概念2.常见空间复杂度计算举例 引入 算法 算法就是一段能将一个物体从初始状态转换到某个目标转态的一个有限长序列方法的统称 算法效率&#xff1a;考虑一个方法是否好&…

网站优化之robots.txt

本文于2015年底完成。 在查询favicon.ico相关的资料时&#xff0c;无间中看到了robots.txt。当时没有太注意&#xff0c;后来在百度的站长平台上看到了robots.txt的说明&#xff0c;咨询了度娘&#xff0c;找到几处说明&#xff0c;这里摘抄过来。 robots.txt文件是一个文本文件…

使用setdefault撰写文本索引脚本(出自Fluent Python案例)

背景介绍 由于我们主要介绍撰写脚本的方法&#xff0c;所以用一个简单的文本例子进行分析 a[(19,18),(20,53)] Although[(11,1),(16,1),(18,1)] ambiguity[(14,16)] 以上内容可以保存在一个txt文件中&#xff0c;任务是统计文件中每一个词&#xff08;包括字母&#xff0c;数…