小程序开发--WXML

2024-06-11 23:58
文章标签 程序开发 wxml

本文主要是介绍小程序开发--WXML,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

WXML

一、 定义:

WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合基础组件、事件系统,可以构建出页面的结构。

二、 语法

<标签 属性key=“属性Value”></标签>

三、功能

  1. 数据绑定
  2. 列表渲染
  3. 条件渲染
  4. 模板引用
  5. 事件

3-1数据绑定

WXML 中的动态数据均来自对应 Page 的 data。数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于:

3-1-1 内容

.wxml

<view> {{ message }} </view>

.js

Page({data: {message: 'Hello World!'}
})
3-1-2组件属性(需要在双引号之内)

.wxml

<view id="item-{{id}}"> </view>

.js

Page({data: {id: 0}
})
3-1-3关键字(需要在双引号之内)

.wxml
true:boolean 类型的 true,代表真值。

false: boolean 类型的 false,代表假值。

<checkbox checked="{{false}}"> </checkbox>

不要直接写 checked=“false”,其计算结果是一个字符串,转成 boolean 类型后代表真值。

3-1-4 运算

可以在 {{}} 内进行简单的运算

3-1-4-1 三元运算
<view hidden="{{flag ? true : false}}"> Hidden </view>
3-1-4-2 算数运算

.wxml

<view> {{a + b}} + {{c}} + d </view>

.js

Page({data: {a: 1,b: 2,c: 3}
})

view中的内容为 3 + 3 + d。

3-1-4-3 逻辑判断
<view wx:if="{{length > 5}}"> </view>

3-2 列表渲染

wx:for
在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。类似 block wx:if,也可以将 wx:for 用在标签上,以渲染一个包含多节点的结构块。
默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item

wx:for-item
可以指定数组当前元素的变量名,
如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 中的输入内容, 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

wx:key 的值以两种形式提供

字符串,代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。
保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如:
当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组件保持自身的状态,并且提高列表渲染时的效率。

wx:for-index 可以指定数组当前下标的变量名
.js

Page({data:{array: [{message: 'hello',}, {message: 'world'}]}}
)

.wxml

<view><block wx:for="{{array}}"><view>{{index}}:{{item.message}}</view></block>
</view>

界面显示:
0:hello
1:world

3-3条件渲染

wx:if

使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:

<view wx:if="{{condition}}"> True </view>

也可以用 wx:elif 和 wx:else 来添加一个 else 块:

<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"> 2 </view>
<view wx:else> 3 </view>

block wx:if

因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。
并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

<block wx:if="{{true}}"><view> view1 </view><view> view2 </view>
</block>

wx:if vs hidden
因为 wx:if 之中的模板也可能包含数据绑定,所以当 wx:if 的条件值切换时,框架有一个局部渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。

同时 wx:if 也是惰性的,如果在初始渲染条件为 false,框架什么也不做,在条件第一次变成真的时候才开始局部渲染。

相比之下,hidden 就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。

一般来说,wx:if 有更高的切换消耗而 hidden 有更高的初始渲染消耗。因此,如果需要频繁切换的情景下,用 hidden 更好,如果在运行时条件不大可能改变则 wx:if 较好。

3-4 模板引用

描述

WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。

声明

在wxml中使用template标签,使用 name 属性,作为模板的名字。然后在内定义代码片段,如:

<template name="msgItem"><view><text> {{index}}: {{msg}} </text><text> Time: {{time}} </text></view>
</template>

使用

使用导入模板,使用 is 属性,声明需要的使用的模板
使用@import "wxss路径“导入模板的样式。

<template is="msgItem" data="{{...item}}"/>

作用域

模板拥有自己的作用域,只能使用 data 传入的数据以及模版定义文件中定义的 模块。

3-5

3-5-1 什么是事件

  • 事件是视图层到逻辑层的通讯方式。
  • 事件可以将用户的行为反馈到逻辑层进行处理。
  • 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。
  • 事件对象可以携带额外信息,如 id, dataset, touches。

3-5-2 使用方式

在组件中绑定一个事件处理函数,然后在相应的Page定义中写上相应的事件处理函数,参数是event。

3-5-3 分类

事件分为冒泡事件和非冒泡事件:
1.冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递。
2.非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。

3-5-4 事件绑定和冒泡

事件绑定的写法同组件的属性,以 key、value 的形式。

  • key 以bind或catch开头,然后跟上事件的类型,如bindtap、catchtouchstart。自基础库版本 1.5.0 起,在非原生组件中,bind和catch后可以紧跟一个冒号,其含义不变,如bind:tap、catch:touchstart。
  • value 是一个字符串,需要在对应的 Page 中定义同名的函数。不然当触发事件的时候会报错。
    如在下边这个例子中,点击 inner view 会先后调用handleTap3和handleTap2(因为tap事件会冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父节点传递),点击 middle view 会触发handleTap2,点击 outer view 会触发handleTap1。
<view id="outer" bindtap="handleTap1">outer view<view id="middle" catchtap="handleTap2">middle view<view id="inner" bindtap="handleTap3">inner view</view></view>
</view>

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

这篇关于小程序开发--WXML的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052620

相关文章

JAVA程序开发参考手册

开发十年,就只剩下这套架构体系了! >>>    <!--包装数据类型 ->//javalangInteger——整数类 //bitCount方法——获取二进制补码中位的数量 int i = 10;int count = Integer.bitCount(i);System.out.print(i + "的二进制补码表示形式的1位的数量");System.out.println(count)

PHP程序开发参考手册

开发十年,就只剩下这套架构体系了! >>>    /**语句*///if语句——条件控制语句<?php$num = 2011;if(($num%4)==0&&($num%100)!=0){echo "$num".'年'."是闰年";}else{echo "$num".'年'."是平年";}?><?php$num = 2011;if(($num%4)==0&&($num%100)!=0

uniapp微信小程序开发踩坑日记:Pinia持久化报错Cannot read property ‘localStorage‘ of undefined

插件默认使用 localStorage 实现持久化,小程序端不兼容,需要替换持久化 API import { defineStore } from 'pinia'   export const useCommonStore = defineStore('pack-store', {state: (): State => ({wwInfo: {},globalData: {},timerLoc

记一次小程序开发过程

写在前面 前后两天花了大约四五个小时制作完了自己第一个小程序,当然是没法发布的,小程序的发布要求还是挺严格的:企业资质、HTTPS、审核。 先大概介绍下自己,我9年前和很多网友一样开始自学编程,这些年来什么语言都学过、什么平台都接触过,自己也做过十来个产品,所以编程基础不是很稳固但是各方面都相对比较熟悉,因此在接触小程序的时候上手比较快。 至于为什么现在选择开发小程序,原因很简单,尝尝鲜!

产品图片小程序开发:全方位指导,让产品展示更出色

想要快速开发并上线一个展示产品图片的小程序吗?乔拓云平台是您的理想选择。只需简单几步,即可打造专属的小程序平台。 首先,访问乔拓云官方网站,注册并登录您的账号。在小程序后端,您可以自由探索丰富的模板库,轻松复制心仪模板作为起点。无论是图片替换、文字修改,还是页面布局调整,一切尽在指尖掌控。选中图片,直接上传您的产品美图;选中文字,即刻调整字号、颜色,让内容更加吸引人。 不仅如此,乔

微信小程序开发流程详解

目录 一 申请小程序账号 1 找到微信小程序所在链接入口 2 注册小程序号码 3 邮箱激活 4 登陆 二 下载小程序编译器 三 开发helloworld 四 上传微信公众平台小程序 五 发布 六 总结  一 申请小程序账号 1 找到微信小程序所在链接入口 打开微信小程序所在公众平台链接地址,注意不是开发平台。 https://mp.weixin.qq.com 如图

Windows自动化程序开发指南

自动化程序的概念 “自动化程序”指的是通过电脑编程来代替人类手工操作的一类程序或软件。这类程序具有智能性高、应用范围广的优点,但是自动化程序的开发难度大、所用技术杂。 本文对自动化程序开发的各个方面进行讲解。 常见的处理对象 自动化程序要处理的对象,与具体的业务需求有关。假设制作一个QQ信息群发工具,所处理对象就是QQ这个软件;如果要制作游戏外挂,处理对象就是那个游戏的界面。 常见的

小程序开发需要服务器吗?

在小程序开发的热潮中,许多人都有一个疑问:小程序开发一定要服务器吗?今天,我们就来深入探讨这个问题。 一、小程序的独特魅力 小程序以其便捷、轻量的特点,迅速在移动互联网领域占据了一席之地。无需下载安装,用户可以随时随地通过微信等平台快速打开使用。它为企业和开发者提供了一个高效的推广和服务渠道,也为用户带来了极大的便利。 二、服务器在小程序中的作用 存储数据 服务器可以存储

基础学习之——Docker 的基本概念和优势,以及在应用程序开发中的实际应用。

Docker是一种开源的容器化平台,可以将应用程序及其所有依赖项打包在一个容器中,实现跨平台、可移植和可扩展的部署。下面是Docker的基本概念和优势: 容器:Docker使用容器来打包应用程序及其依赖项,容器是一个独立、可执行的软件包,包含代码、运行时环境、系统工具、系统库等。容器可以在任何支持Docker的平台上运行,提供了一种轻量级和一致性的部署方式。 镜像:镜像是容器构建的基础,它是

开学啦!校园跑腿小程序开发,焕新生活尽在指尖!

随着移动互联网技术的不断发展,校园跑腿小程序成为了高校生活中不可或缺的一部分。无论是代拿快递、代买物品,还是代办各种事务,校园跑腿小程序都能为学生提供极大的便利。 校园内的人群密集,购买东西的需求尤为强烈,还有待取快递,帮买帮送,各种跑腿需求十分常见。而小程序作为即点即用的应用,使用起来简单快捷,同学们的接受程度也会很高。 校园跑腿小程序的功能设计非常重要,小程序的制作,需要技术团队的支持