小白开发微信小程序04--WXML结构

这篇具有很好参考价值的文章主要介绍了小白开发微信小程序04--WXML结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么是WXML

什么是Wxml呢?我们首先要介绍一下Html,Html的全称为HyperTextMarkup Language,翻译过来就是超文本标记语言,这种语言目前已经普遍用于前端开发,而wxml正是从html演变而来,它基于微信这个平台,在很多方面变得更加简洁易用,更加适合微信小程序的开发。Wxml依然是标签语言,在小程序中,它可以结合基础组件、事件系统,可以构建出页面的结构。

2、wxml与html的区别

小白开发微信小程序04--WXML结构

WXML,就可以理解为我们传统页面中的HTML,它是微信为我们提供的一套标签语言,可以说它就是我们小程序的脸面(虽然没经过CSS装饰前不一定光鲜亮丽),开发中 WXML 页面就作为我们一些逻辑行为的入口,以及效果展示的承载者。

再大白话一点:你所看到的小程序页面长什么样,就是 WXML(主要) + WXSS (美化) 实现的。

3、wxml语法

网页编程采用的是 HTML + CSS + JS 这样的组合,其中 HTML 是用来描述当前这个页面的结构,CSS 用来描述页面的样子,JS 通常是用来处理这个页面和用户的交互。同样道理,在小程序中也有同样的角色,其中 WXML 充当的就是类似 HTML 的角色。打开 pages/index/index.wxml,你会看到以下的内容:

小白开发微信小程序04--WXML结构

从上边的例子可以看到,小程序的 WXML 用的标签是 view, button, text 等等,这些标签就是小程序给开发者包装好的基本能力,我们还提供了地图、视频、音频等等组件能力。

小白开发微信小程序04--WXML结构

语法是:

小白开发微信小程序04--WXML结构
小白开发微信小程序04--WXML结构

view 类似html div标签 块级元素,换行,比如:<view>我是view标签,会换行</view>

小白开发微信小程序04--WXML结构

所有组件都有以下属性:

小白开发微信小程序04--WXML结构

4、数据绑定

WXML 中的动态数据均来自对应 Page 的 data,数据绑定功能使得程序在运行过程中,具备动态改变渲染界面的能力,从而达到了更好的用户体验效果。

数据绑定使用 Mustache 语法(双大括号)将变量包起来

在index.js中的page,加入以下代码:

小白开发微信小程序04--WXML结构

在index.wxml中的代码:

小白开发微信小程序04--WXML结构

然后点击“编译”按钮,看到效果如上图

具体看文档:https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/data.html

运算可以在 {{}} 内进行简单的运算,支持的有如下几种方式:

算数运算

小白开发微信小程序04--WXML结构

逻辑判断

小白开发微信小程序04--WXML结构

5、列表渲染

在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。

默认数组的当前项的下标变量名默认为 index ,数组当前项的变量名默认为 item

使用 wx:for-item 可以指定数组当前元素的变量名,

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

index.js代码

小白开发微信小程序04--WXML结构

index.wxml代码:

小白开发微信小程序04--WXML结构

详情看文档:https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/list.html

block wx:for 类似 block wx:if,也可以将 wx:for 用在标签上,以渲染一个包含多节点的结构块。例如:

小白开发微信小程序04--WXML结构

6、条件渲染

在框架中,使用 wx:if="" 来判断是否需要渲染该代码块:

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

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

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

block wx:if

因为 wx:if 是一个控制属性,需要将它添加到一个标签上。如果要一次性判断多个组件标签,可以使用一个 <block/> 标签将多个组件包装起来,并在上边使用 wx:if 控制属性。

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

注意: <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。

wx:if vs hidden

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

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

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

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

7、模板

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

定义模板

使用 name 属性,作为模板的名字。然后在<template/>内定义代码片段,如:

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

使用模板

使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入,如:

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

is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板:

<template name="odd">
  <view> odd </view>
</template>
<template name="even">
  <view> even </view>
</template>
<block wx:for="{{[1, 2, 3, 4, 5]}}">
  <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>
</block>
小白开发微信小程序04--WXML结构
小白开发微信小程序04--WXML结构

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

8、引用

WXML 提供两种文件引用方式import和include。

import

import可以在该文件中使用目标文件定义的template,如:

在 item.wxml 中定义了一个叫item的template:

<template name="item">
  <text>{{text}}</text>
</template>

在 index.wxml 中引用了 item.wxml,就可以使用item模板:

<import src="item.wxml"/>
<template is="item" data="{{text: 'forbar'}}"/>

import 的作用域

import 有作用域的概念,即只会 import 目标文件中定义的 template,而不会 import 目标文件 import 的 template。

如:C import B,B import A,在 C 中可以使用 B 定义的template,在 B 中可以使用 A 定义的template,但是 C 不能使用 A 定义的template。

<!-- A.wxml -->
<template name="A">
  <text> A template </text>
</template>
<!-- B.wxml -->
<import src="a.wxml"/>
<template name="B">
  <text> B template </text>
</template>
<!-- C.wxml -->
<import src="b.wxml"/>
<template is="A"/>  <!-- Error! Can not use tempalte when not import A. -->
<template is="B"/>

include

include 可以将目标文件除了 <template/> <wxs/> 外的整个代码引入,相当于是拷贝到 include 位置,如:文章来源地址https://www.toymoban.com/news/detail-484886.html

<!-- index.wxml -->
<include src="header.wxml"/>
<view> body </view>
<include src="footer.wxml"/>
<!-- header.wxml -->
<view> header </view>
<!-- footer.wxml --><view> footer </view>

到了这里,关于小白开发微信小程序04--WXML结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小白开发微信小程序50--云服务器部署测试小程序

    在前面49节的操作证明了操作正确的,但这只是在本地测试部署成功,还差一步就是前台和后台的程序都必须运行在internet上才行,而不可能运行在本地机器服务器上,方式是先在本地部署测试,然后再云服务器上部署测试,所以接下继续搞,继续干。 只要是云服务器都可以

    2024年02月11日
    浏览(39)
  • 小白开发微信小程序49--本地服务器部署测试小程序

    相信大家对微信小程序的基础和项目应该没有太大问题了,如果还有对微信小程序开发有一些问题,请查看回顾...微信小程序开发者开发好一款微信小程序后,怎么才能发布呢?如何将其提交给微信审核呢? 在前面的【领航教育】项目开发中,后台采用的是C#开发语言,提供的

    2024年02月09日
    浏览(40)
  • 微信小程序逆向 小程序包使用unveilr工具解包后在开发者工具报[ WXML 文件编译错误] xxx.wxs Unexpected token `}`

    微信小程序逆向 使用解包工具后后在开发者工具报[ WXML 文件编译错误] xxx.wxs Unexpected token } 页面上则报编译.wxml文件错误… 解决方案: 很简单,因为是解包出来的,一般代码都是没有错的,我们只需要微信微信开发者工具中的资源管理器或者其他地方,找到这个文件,然后

    2024年02月08日
    浏览(36)
  • uniapp开发微信小程序,出现[微信小程序开发者工具] [error] Error: Fail to open IDE 错误的原因--潘万丁

    [微信小程序开发者工具] [error] Error: Fail to open IDE 是因为 小程序AppID这里的id有自己以前填写的,现在肯能某种原因无法使用,所以把它清空或天上自己现在能用的即可,我建议为空更好,然后运行微信小程序肯能不会跳出来,这是需要将微信开发者工具关闭完了,在hbuilder

    2024年02月16日
    浏览(33)
  • 小白开发微信小程序21--网络API(asp.net core版)

    在一个网站里面发起https请求是很常见的,但是,由于微信小程序是腾讯内部的产品,不能直接打开一个外部的链接,例如,您在微信小程序里面无法直接打开网站,但是,在做小程序开发的时候,如果想调用这个网站的一个接口,这时,如何使用?因为,微信小程序里面不

    2024年02月09日
    浏览(57)
  • 【微信小程序】wxml模板的使用

    目录 一,wxml模板 1.什么是 WXML 2. 什么是 WXSS 3.WXSS 和 CSS 的区别 4 .JS 逻辑交互 二,小程序的宿主环境 1.宿主环境简介 1.什么是宿主环境 2. 小程序的宿主环境 3.宿主环境包含内容 2 通信模型

    2024年02月04日
    浏览(34)
  • 微信小程序如何开发,调试技巧,对程序员小白来说太重要了

    简要介绍一下微信小程序开发的基本流程和一些常用组件,供你参考。在实际开发过程中,你可以根据需求选择合适的组件和 API 进行开发。 首先,你需要注册成为微信小程序开发者。访问微信公众平台(https://mp.weixin.qq.com/)并用你的微信号登录。进入“小程序”模块,按照

    2024年02月07日
    浏览(53)
  • 微信小程序编译.wxml文件编译错误

    [ WXML 文件编译错误] ./pages/mine/wallet.wxml Bad value with message 1 | view 刚开始找了半天都没发现错误,后面才发现原来是我写页面的时候,插值语法忘记换成后端传过来的数据了, 无语子- - 。 把插值语法中的中文改掉就不会报错了,不过不同原因都会报这个错误,错误原因大部分

    2024年02月15日
    浏览(39)
  • 微信小程序wxml使用过滤器

    如何在微信小程序wxml使用过滤器/格式化字串?(常用就是格式化字符串) 犹如Angular使用pipe管道(过滤器)这样子方便,用的最多就是时间格式化。 下面是实现时间格式化的方法和步骤: 插入代码: 在 wxml 中使用

    2024年02月07日
    浏览(32)
  • 《微信小程序》在wxml中使用函数

    在wxml中使用函数有两种方法 方法一:在wxml中直接添加模块,就可以在wxml中直接引用,举个例子 方法二:新建wxs文件,在文件中写入函数,举个例子

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包