| 分类 mini  | 标签 小程序  WXML 

title

引言

WXML(WeiXin Markup Language)是小程序的标记语言,语法上类似 HTML,但针对小程序场景做了定制和扩展。它支持数据绑定、条件渲染、列表渲染、模板引用等特性,能够以声明式的方式描述界面结构,并与逻辑层的数据保持同步。

掌握 WXML 是构建小程序界面的核心技能。与 HTML 不同,WXML 中的动态内容必须通过 `` 显式绑定,不能直接写 JavaScript 表达式;同时,WXML 提供了一套以 wx: 为前缀的指令,用于控制渲染逻辑。理解这些差异,可以避免从 Web 开发迁移时的常见误区。

数据绑定

数据绑定是 WXML 与逻辑层通信的桥梁。使用双花括号 `` 将 Page 或 Component 的 data 中的字段绑定到视图层,支持简单的表达式和运算。当 data 通过 setData 更新时,绑定了该字段的视图会自动刷新。

<view></view>
<view></view>
<view></view>

属性绑定时,整个属性值需用双引号包裹,内部使用 `` 引用变量。注意:属性值为布尔型时,false 会解析为 false,若写 checked="false" 则会被当作字符串,导致 checkbox 仍显示为选中。正确写法是 checked="false"

<view id="item-">内容</view>
<checkbox checked=""/>

条件渲染

条件渲染用于根据数据状态显示或隐藏不同的 UI 块。wx:ifwx:elifwx:else 是块级指令,不满足条件的节点不会被渲染到 DOM 中,因此适合条件切换不频繁的场景,可减少不必要的节点。

<view wx:if="">优秀</view>
<view wx:elif="">及格</view>
<view wx:else>不及格</view>

相比之下,hidden 通过 CSS 的 display: none 隐藏元素,节点始终存在于 DOM 中,仅切换显示状态。适合需要频繁切换的场景(如 Tab 切换),因为不需要反复创建和销毁节点。选择 wx:if 还是 hidden,需根据切换频率和列表长度权衡。

列表渲染

列表渲染通过 wx:for 指令遍历数组,为每个元素生成对应的节点。wx:key 用于指定列表中每项的唯一标识,帮助框架在 diff 时正确复用节点,避免错位和状态混乱。当列表项有动态增删或排序时,wx:key 尤为重要。

<view wx:for="" wx:key="id">
  : 
</view>

默认情况下,循环变量名为 item,索引名为 index。通过 wx:for-itemwx:for-index 可自定义变量名,避免与作用域内其他变量冲突。例如在嵌套循环中,可设置 wx:for-item="subItem" 以区分内外层。

模板与引用

当同一块结构需要在多处复用时,可使用 <template> 定义模板。模板本身不会渲染,只有通过 is 属性引用并传入 data 时才会生成实际节点。模板可以定义在当前文件,也可通过 importinclude 从其他文件引入,适合卡片、列表项等重复结构的抽象。

<template name="userCard">
  <view> - </view>
</template>
<template is="userCard" data=""/>

总结

WXML 通过数据绑定、条件与列表渲染、模板等语法,实现声明式 UI。合理使用 wx:key 保证列表 diff 正确,根据场景选择 wx:ifhidden,可提升渲染性能。建议将复杂结构抽成模板,保持 WXML 简洁易读。


上一篇     下一篇