小程序基础篇-视图与逻辑

news2024/9/20 23:18:31

本次学习目标:

实现页面间的导航跳转

实现下拉刷新

实现上拉加载更多

知道小程序常用的生命周期函数

1.页面导航

  • 页面导航指的是页面之前相互的跳转

  • 浏览器之间的页面导航有两种:<a>;location.href

  • 小程序之间的页面导航有两种:声明式导航;编程式导航

1.1声明式导航

  • 在页面声明一个<navigator>导航组件,点击<navigator>组件实现页面之间的跳转

  • 需要指定url和open-type属性

  • url表示要跳转的页面地址,以/开头

  • open-type表示跳转方式,有switchTab/navigate/navigateBack,默认为navigate

  • 注意后退效果switchTab无效

<navigator url="/pages/order/order" open-type="switchTab">跳转订单页</navigator>
<navigator open-type="navigateBack" delta="1">返回</navigator>

1.2编程式导航

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

1.2.1跳转到tabBar页面

wx.switchTab(Object object)方法,可跳转tabBar页面,object属性如下:

<button bindtap="gotoHome">到首页</button>
gotoHome(){
        wx.switchTab({
          url: '/pages/home/home',
        })
    },

注意跳转文件不要写后缀名html;不然会报错

1.2.2跳转到非tabBar页面

调用wx.navigateTo(Object object) 方法,属性如下:

1.2.3 后退导航

调用wx.navigateBack(Object object),返回上一页或者多级页面,object对象可选参数为:

1.3 导航传参

1.3.1声明式导航传参

  • url后面携带参数

  • 参数与路径之间用 ?分隔

  • 参数键与参数值之间用 = 相连

  • 不同参数用&分隔

 <navigator url="/page/navigate/navigate?title=navigate" hover-class="navigator-hover">跳转到新页面</navigator>

1.3.2编程式导航传参

同上使用url传参

缺点是这样传参不是动态参数

·1.3.3接收参数

在onLoad事件可以获取都全部类型的导航传参的值,一般会存储到data中使用

onLoad: function(options){
    this.setDate({
        params: options
    })
}
    • 页面事件

2.1下拉刷新事件

下拉刷新是指手指在屏幕上下拉滑动的操作,从而加载页面数据

2.1.1 启动下拉刷新

有全局开启下拉刷新和局部开启下拉刷新

  • 全局下拉刷新:app.json的window节点,enablePullDownRefresh为true(不推荐)

  • 局部下拉刷新:页面的.json文件,enablePullDownRefresh为true,去.js文件onPullDownRefresh() {}做处理

2.1.2 停止下拉刷新

使用完后调用wx.stopPullDownRefresh()

2.2 上拉触底

上拉触底是上拉滑动操作,加载更多数据的行为,在js 文件的onReachBottom事件做逻辑处理

2.2.1配置上拉触距离

在.json文件中,通过onReachBottomDistance 配置上拉触底的距离

默认距离是50px,可按照实际开发设置距离

2.2.2 添加loading提示

  • 上拉触底调用随机颜色

  • 添加loading提示效果;wx.showLoading开启,wx.hideLoad关闭

2.2.3 上拉触底节流处理

  1. 在data中定义isLoading节流阀

  1. 在getcolor修改isload节流阀

  1. 在onReachBottom判断节流阀

// pages/my/my.js
Page({

    /**
     * 页面的初始数据
     */
    data: {
        colorList:[],
        isLoading: false
    },
    getColor() {
        this.setData({
            isLoading: true
        })
        // loading提示
        wx.showLoading({
          title: '数据加载中...',
        })
        wx.request({
        url: 'https://www.escook.cn/api/color',
        method: 'get',
        success:({data: res}) => {
            this.setData({
                colorList: [...this.data.colorList, ...res.data]
            })
        },
        complete: () => {
            wx.hideLoading(),
            this.setData({
                isLoading: false
            })
        }
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
        this.getColor()
    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {
        if(this.data.isLoading)return
            this.getColor()
    },

})

2.3 自定义编译模式

在开发过程中,每次刷新都会进入首页,再点进我们所需要的页面

微信开发者工具(上方)-- 普通编译--添加编译模式--启动页面

这样每次就能快速进入我们开发的页面,提高开发效率

    • 生命周期

生命周期是值一个对象从 创建--运行-- 销毁 的整个阶段,强调的是一个时间段

小程序的生命周期:开始到结束的过程

3.1生命周期的分类

小程序分两类生命周期

应用生命周期

小程序启动--运行--销毁的过程

页面生命周期

每个页面加载--渲染--销毁的过程

  • 其中,页面生命周期范围小,应用生命周期范围大

3.2 生命周期函数

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

作用:运行开发者在特定的时间点,执行某些特定的操作

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

3.3 生命周期函数的分类

3.3.1 应用生命周期函数

小程序启动--运行--销毁依次调用的函数

  • onLaunch:小程序初始化触发

  • onShow:小程序启动或者后台进入前台触发

  • onHide:前台进入后台触发

3.3.2 页面生命周期函数

每个页面加载--渲染--销毁依次调用的函数,在页面的js文件声明

  1. onLoad:监听页面加载,一个页面调用一次

  1. onShow:监听页面显示

  1. onReady:初次渲染完成,一个页面调用一次

  1. onHide:页面隐藏

  1. onUnload:页面卸载,一个页面调用一次

    • WXS脚本

3.1 概念

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

应用场景:wxml中无法调用js定义函数,但是可以调用wxs中的函数。小程序中wxs的应用场景就是‘过滤器’。

3.1.1wxs和JavaScript的关系

wxs语法类似js,但是是完全不一样的两种语言

  • wxs有自己的数据类型:number\string\boolean\function\array\date\regexp

  • wxs不支持es6以上语法:不支持let、const、解构、展开运算符、箭头函数、对象简写

  • wxs遵循CommonJs规范:module对象、require()函数、module.exports对象

3.1.2基本语法

内联式:

wxs代码可以编写在wxml文件的<wxs>标签里,类似<script>标签

wxml文件中每个<wxs>标签,必须提供model属性,用来指定当前wxs的模块名称用来访问成员

<view>{{m1.toUpper(name)}}</view>
<wxs module="m1">
    module.exports.toUpper = function(str){
        return str.toUpperCase()
    }
</wxs>

外联式:

wxs代码可以像js一样,编写在.wxs为后缀名的文件内

在utils/xxx.wxs文件

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

module.exports = {
    toUpper: toUpper
}

使用:

<view>{{m2.toUpper(name)}}</view>
<wxs src="../../utils/toUpper.wxs" module="m2"/>

WXS的特点

  • 应用场景是过滤器,经常搭配Mustache语法使用

  • 在wxs中定义的函数不能作为组件的事件回调函数

  • 隔离性:wxs的运行环境和js代码是隔离的,wxs不同调用js的函数、小程序的API

  • 性能好:在IOS设备上,wxs比js代码快2-20倍

  • 在Android设备上,二者的运行效率无差异

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

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

相关文章

告警与恢复告警原理及实现

一、 背景自“双碳”政策提出以来&#xff0c;KaiwuDB 聚焦“数字能源”领域&#xff0c;为用户打造数字能源管理平台&#xff0c;旨在提升综合能源和碳资产管理能力。数字能源管理平台是以 KaiwuDB 为核心建设的云-边-端一体化数据服务平台&#xff0c;致力于为 IoT、工业互联…

前言技术--swagger

目录一、前后端分离的特点二、在没有swagger之前三、swagger的作用四、swagger的优点五、集成swagger5.1 新建springboot项目5.2 集成swagger5.3 开发一个controller用于测试5.4 启动服务&#xff0c;验证集成效果六、swagger常用注解七、swagger使用综合案例一、前后端分离的特…

Python的PyQt框架的使用-常用控件篇

Python的PyQt框架的使用-常用控件篇一、前言二 、QLineEdit 文本框三 、QPushButton按钮控件四、QRadioButton 单选按钮一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Python的PyQt框架的常用控件。如果文章对你有帮助、欢迎…

第一个程序——构建一个ServerUI

简介 本次程序设计均使用python实现&#xff0c;使用sql server对聊天室用户的数据进行存储。通过python socket套接字编程&#xff0c;实现了在线聊天室的功能&#xff0c;并使用python tkinter进行UI界面的设计。 思路 由计算机网络的基础知识易知&#xff0c;两个主机之间…

基于LSTMGRU的微博突发事件分析与谣言检测(附完整的代码+报告)

问题描述及方法基础 本章主要对课题研究所涉及的机器学习、自然语言处理的原理和方法进行介绍,主要分为四部分,第一部分是将本课谣言检测任务的符号化描述;第二部分是微博数据的预处理,包括语言模型、文本分词等技术;第三部分与第四部分分别是本文搭建的微博谣言检测模型所…

py字符串的格式化笔记

print():和cjava差不多&#xff0c;只是逗号变了&#xff0c;其中 %s 就是模板中的占位符&#xff0c;表示这个位置先占着&#xff0c;待会儿要有数据填入到这里。然后再提供一个元组&#xff0c;里面依次存放需要填入到 %s 位置 的数据。这里是使用变量 (salary,tax,aftertax)…

CSS.前端基础.html

什么是 CSS? CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中&#xff0c;是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在 CSS 文件中多个样式定义可层叠为一个示…

丝绸之路也可以是科技传播之路

唐宋元海外贸易 618年-1368年 王孝通 生卒年代不详 孙思邈541年—682年 一行 公元683年-公元727年 李淳风 602年&#xff0d;670年 沈括 1031年&#xff0d;1095年 郭守敬 1231年&#xff0d;1316年 扎马鲁丁生卒年代不详 阿拉伯帝国 632年-1258年 阿尔花拉子模 780年&#xf…

【深度强化学习】【论文阅读】【双臂模仿】Deep Imitation Learning for BimanualRobotic Manipulation

title: Deep Imitation Learning for BimanualRobotic Manipulation date: 2023-01-15T20:54:56Z lastmod: 2023-01-19T18:31:57Z Deep Imitation Learning for BimanualRobotic Manipulation 1 Introduction 文中使用的模型是一个深度的、分层的、模块化的架构。与 baselin…

微服务负载均衡器Ribbon学习笔记

目录 1.什么是Ribbon 1.1 客户端的负载均衡 1.2 服务端的负载均衡 1.3 常见负载均衡算法 2. Nacos使用Ribbon 3. Ribbon负载均衡策略 4.修改默认负载均衡策略 方式1&#xff1a;通过自定义配置类来实现 方式2&#xff1a;通过修改配置文件实现&#xff08;推荐&#xf…

9、jQuery

jQuery库&#xff1a;里面存在大量的JavaScript函数 官网&#xff1a;https://jquery.com/ 9.1 获取jQuery jQuery引入 cdn 引入 <script src"https://cdn.bootcss.com/jquery/3.4.1/core.js"></script>本地引入 <script src"lib/jquery-3.6.3.…

C语言练习——3

C语言练习——3一、 操作符练习1.1交换两个变量&#xff08;不创建临时变量&#xff09;1.2 打印整数二进制的奇数位和偶数位1.3[二进制中1的个数](https://www.nowcoder.com/questionTerminal/8ee967e43c2c4ec193b040ea7fbb10b8)1.4[两个整数二进制位不同个数](https://www.no…

【 java 反射下篇】java反射机制不难吧?来看看这篇

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…

Element Plus 跟踪表格数据总数,包括查询、筛选等操作

前言 Element Plus的表格组件提供了筛选功能 前端项目中&#xff0c;如果表格使用的是后端分页&#xff0c;使用表格插件及分页器插件就可以了。这种情况下&#xff0c;前端的表格筛选被后端的分页条件查询取代了 另一种情况&#xff1a;不分页&#xff0c;直接查询所有数据…

Win7快速部署weblogic 12c

0x00 前言 需要一个漏洞中等数量的版本。 0x01 安装环境 版本操作系统Windows 7 64bitJDKjdk-8u101-windows-x64weblogic12.2.1.3 0x02 下载地址 JDK 下载地址 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html jdk 1.8版本&#xff0c;文…

华为机试题:HJ16 购物单(python)

文章目录知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。2、print() &#xff1a;打印输出。3、strip()&#xff1a;删除字符串&#xff08;开头 / 结尾&#xff09;指定字符&#xff08;默认空格&#xff09;或字符…

两小时上手ActiveMQ

一、消息中间件概述 1.1 消息中间件产生的背景 在客户端与服务器进行通讯时.客户端调用后&#xff0c;必须等待服务对象完成处理返回结果才能继续执行。 客户与服务器对象的生命周期紧密耦合,客户进程和服务对象进程都都必须正常运行;如果由于服务对象崩溃或者网络故障导致用…

ceres学习笔记(四)

前言&#xff1a; 学习了pose_graph_2d部分&#xff0c;因为先学习了3维的pose_graph_3d部分&#xff0c;所以这个就比较容易。简单来说就是se2和se3的区别。整个的运行逻辑和3维部分的pose_graph_3d部分是一样的&#xff0c;概括为&#xff1a; 1.设置好两个type&#xff0c…

7、CenOS6安装Nginx

Nginx的安装与启动 什么是Nginx Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。由俄罗斯的程序设计师伊戈尔西索夫&#xff08;Igor Sysoev&#xff09;所开发&#xff0c;官方测试 nginx 能够支支撑 5 万并发链接…

《早安隆回》的铁粉,深圳80后男子不计成本,收购袁树雄签名照

谁也没有想到&#xff0c;五十多岁并且离异多年的袁树雄&#xff0c;靠着一首《早安隆回》&#xff0c;一夜之间红遍大江南北。如今《早安隆回》这首歌曲&#xff0c;已经拥有了三百万流量&#xff0c;有人说袁树雄下辈子都吃喝不愁&#xff0c;他的前妻该后悔了。 《早安隆回》…