微信小程序Mustache语法

2023-11-02

小程序开发的wxml里,用到了Mustache语法。所以,非常有必要把Mustache研究下。

什么是Mustache?Mustache是一个logic-less(轻逻辑)模板解析引擎,它是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的HTML文档。比如小程序的wxml中的代码:

{{userInfo.nickName}},这里的{{ }}就是Mustache的语法。

1、Mustache的模板语法很简单,就那么几个:

{{keyName}}

{{{keyName}}}

{{#keyName}} {{/keyName}}

{{^keyName}} {{/keyName}}

{{.}}

{{!comments}}

{{>partials}}

1、{{keyName}}

⑴ 简单的变量替换:{{name}}

var data = { "name": "weChat" };

Mustache.render("{{name}} is excellent.",data);

返回 weChat is excellent.

⑵ 变量含有html的代码,如:

、等而不想转义,可以在用{{&name}}

?
1
2
3
4
5
6
7
8
9
10
11
var data = {
 
        "name" : "
weChat
"
 
      };
 
var output = Mustache.render( "{{&name}} is excellent." , data);
 
console.log(output);

返回:

weChat
is excellent.

 去掉"&"的返回是转义为:

weChat
is excellent.

另外,你也可以用{{{ }}}代替{{&}}。

⑶ 若是对象,还能声明其属性

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var data = {
 
        "name" : {
 
        "first" : "Chen"
 
        "last" : "Jackson"
 
        },
 
        "age" : 18
 
      };
 
var output = Mustache.render(
 
       "name:{{name.first}} {{name.last}},age:{{age}}" , data);
 
console.log(output);

返回:name:Chen Jackson,age:18

 2、{{#keyName}} {{/keyName}}

以#开始、以/结束表示区块,它会根据当前上下文中的键值来对区块进行一次或多次渲染。它的功能很强大,有类似if、foreach的功能。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var data = {
 
        "stooges" : [ {
 
          "name" : "Moe"
 
        }, {
 
          "name" : "Larry"
 
        }, {
 
          "name" : "Curly"
 
        } ]
 
      };
 
  
 
var output = Mustache.render( "{{#stooges}}{{name}}{{/stooges}}"
 
          data);
 
console.log(output);

返回:Moe

      Larry

      Curly

3、{{^keyName}} {{/keyName}}

该语法与{{#keyName}} {{/keyName}}类似,不同在于它是当keyName值为null, undefined, false时才渲染输出该区块内容。比如:

?
1
2
3
4
5
6
7
8
9
10
11
var data = {
 
        "name" : "
weChat
"
 
      };
 
   var tpl = ‘{{^nothing}}没找到 nothing 键名就会渲染这段{{/nothing}}';
 
   var output = Mustache.render(tpl, data);

返回:没找到 nothing 键名就会渲染这段

4、{{.}}

    {{.}}表示枚举,可以循环输出整个数组,例如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var data = {
 
   "product" : [ "Macbook " , "iPhone " , "iPod " , "iPad " ]
 
   }
 
   var tpl = '{{#product}}
 
{{.}}
 
{{/product}}' ;
 
  
 
   var html = Mustache.render(tpl, data);

返回:

Macbook

iPhone

iPod

iPad

5、{{!  }}表示注释

6、{{>partials}}

以>开始表示子模块,当结构比较复杂时,我们可以使用该语法将复杂的结构拆分成几个小的子模块

转载于:https://www.cnblogs.com/yk123/p/6396751.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序Mustache语法 的相关文章

随机推荐

  • Springboot整合Mybatis之数据源配置

    spring datasource driver class name com mysql cj jdbc Driver spring datasource url jdbc mysql localhost 3306 springboot
  • androidstudio3.0解决gradle plugin 和android_apt不兼容问题

    将项目下的 classpath com neenbedankt gradle plugins android apt 1 8 删掉 和modul下的apply plugin com neenbedankt android apt 删掉 ap
  • opengl嵌入pyqt5编译的分割窗口中

    opengl嵌入pyqt5编译的分割窗口中 向大部分商业仿真软件一样 使用opengl显示三维模型 首先需要将opengl的窗口嵌入到pyqt5编译的界面中 下面是一个小例子 python view plain copy from PyQt
  • AI-视频换脸

    本文涉及到的代码均已放置在我的github中 gt 链接 环境 Anaconda 集成 python 3 6 5 主要使用了 dlib numpy opencv 调用为cv2 os这四个库 录制 截屏 FSCapture 8 0 目的 将视
  • pycharm配置PyQt5,以及创建第一个项目

    认你已经安装好了pycharm 也正确安装了PyQt5 否则 请移步https www cnblogs com longbigbeard p 9628102 html来安装PyQt5 下一步 Tools gt External Tools
  • CTFHub---xss 反射型

    反射型 反射型xss攻击 Reflected XSS 又称为非持久性跨站点脚本攻击 它是最常见的类型的XSS 攻击代码的工作方式可以分为三个类型 1 持久型跨站 最直接的危害类型 跨站代码存储在服务器 数据库 2 非持久型跨站 反射型跨站脚
  • 特征工程的建立过程

    1 特征工程 1 1 了解特征工程 数据挖掘 二八原则 80 的精力 gt 选取特征 20 的精力 gt 模型融合等 基于数据分析与探索提取潜在有价值的特征 特征工程重要性 特征越好 模型的性能越出色 特征越好 构建的模型越简单 特征越好
  • 清除浮动的五种方法

    为什么要清除浮动 因为往往浮动后的子元素因为脱离了标准流 不能自动撑起父元素的高度 所以会对后续布局产生影响 对此清除浮动不如理解为清除浮动产生的影响更为合理 例如 我们设置了两个盒子如图所示 粉色为父盒子 只有宽度没有高度 蓝色盒子有宽有
  • v-for和v-if不能同时使用(原因和解决方法)

    原因 当v for和v if同时使用时 VSCode会提示报错 这是因为v for的优先级比v if的优先级高 每一次遍历 再一个一个决定是否需要显示出来 渲染了多余的DOM节点 这会影响性能 解决 1 加一个
  • 【网络结构设计】1、ResNeXt

    文章目录 一 背景 二 方法 三 效果 论文 Aggregated Residual Transformations for Deep Neural Networks 代码 https github com miraclewkf ResNe
  • 前端浏览器报错:Invalid prop: type check failed for prop "border". Expected Boolean, got String.

    用elementUI写vue 项目 在浏览器调试的时候报了这个错误 原因是给表格加border true 让表格得到竖直的框线 插件希望得到的是一个布尔值 但是得到的是true的字符串 解决办法 在border true 前加上一个冒号
  • vue---深度修改样式

    scss parent v deep children1 样式 children2 样式
  • Sharding-Jdbc实现读写分离、分库分表

    1 概览 ShardingSphere Jdbc定位为轻量级Java框架 在Java的Jdbc层提供的额外服务 它使用客户端直连数据库 以jar包形式提供服务 可理解为增强版的Jdbc驱动 完全兼容Jdbc和各种ORM框架 2 MySQL主
  • LINUX下MYSQL密码正确但无法本地登录

    如果可以远程登录 但无法本地登录 报错为1045 可能出错原因和我一样 配置过远程连接 修改过user表中的host字段 而mysql默认user为localhost 不匹配于是报错 解决办法 1 启动mysql时跳过密码问题 打开my c
  • git:远程仓库

    远程仓库是指托管在网络服务器上的项目仓库 可能会有好多个项目仓库 其中有些你只能读 另外有些可以写 同他人协作开发某个项目时 需要管理这些远程仓库 以便推送或拉取数据 分享各自的工作进展 假设远程仓库有一个默认远程分支 dev 如果将其克隆
  • Ubuntu下SSH设置,实现远程登录

    网上有很多介绍在Ubuntu下开启SSH服务的文章 但大多数介绍的方法测试后都不太理想 均不能实现远程登录到Ubuntu上 最后分析原因是都没有真正开启ssh server服务 最终成功的方法如下 Ubuntu 下安装 OpenSSH Se
  • nginx的配置转发

    有这样一个需求 项目中跳转到某个地址 但这个地址不想暴露给用户 因此我们想到要做一层代理 通过项目某个路径直接用ngnix代理到这个地址 查询相关文档后 发现方案如下 用return 302 1 2 3 location myBaidu r
  • 【SpringBoot】过滤器,监听器,拦截器介绍

    文章目录 一 简介 1 过滤器 2 拦截器 3 监听器 二 如何创建 1 过滤器 2 监听器 3 拦截器 三 总结 一 简介 通过两幅图我们可以理解拦截器和过滤器的特点 1 过滤器 过滤器是在请求进入tomcat容器后 但请求进入servl
  • 环形缓冲区– Disruptor背后的数据结构

    环形缓冲区 Disruptor背后的数据结构 Disruptor是一个高性能的库 用于在线程之间传递消息 该库由LMAX Exchange公司在几年前开发和开源 他们创建了此软件来处理其零售金融交易平台中的巨大流量 超过600万TPS 在2
  • 微信小程序Mustache语法

    小程序开发的wxml里 用到了Mustache语法 所以 非常有必要把Mustache研究下 什么是Mustache Mustache是一个logic less 轻逻辑 模板解析引擎 它是为了使用户界面与业务数据 内容 分离而产生的 它可以