微信小程序  Mustache语法详细介绍


Posted in Javascript onOctober 27, 2016

微信小程序  Mustache语法详解

最近微信小程序非常火,对于前端开发的程序员是个利好的消息,这里主要记录下微信小程序  Mustache语法。

小程序开发的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}}

var data = {

       "name" : "
weChat
"

     };

var output = Mustache.render("{{&name}} is excellent.", data);

console.log(output);

返回:

weChat
is excellent.

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

weChat
is excellent.

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

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

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的功能。

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时才渲染输出该区块内容。比如:

var data = {

       "name" : "
weChat
"

     };

  var tpl = ‘{{^nothing}}没找到 nothing 键名就会渲染这段{{/nothing}}';

  var output = Mustache.render(tpl, data);

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

4、{{.}}

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

var data = {

  "product": ["Macbook ","iPhone ","iPod ","iPad "]

  }

  var tpl = '{{#product}}

{{.}}

{{/product}}';

 

  var html = Mustache.render(tpl, data);

返回:

Macbook

iPhone

iPod

iPad

5、{{!  }}表示注释

6、{{>partials}}

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

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
如何在一个页面显示多个百度地图
Apr 07 Javascript
jQuery实现的一个自定义Placeholder属性插件
Aug 11 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
实现非常简单的js双向数据绑定
Nov 06 Javascript
大型JavaScript应用程序架构设计模式
Jun 29 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
微信小程序中form 表单提交和取值实例详解
Apr 20 Javascript
create-react-app构建项目慢的解决方法
Mar 14 Javascript
angular实现input输入监听的示例
Aug 31 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
Nov 20 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
Jul 15 Javascript
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
利用JQuery直接调用asp.net后台的简单方法
Oct 27 #Javascript
JavaScript登录验证码的实现
Oct 27 #Javascript
微信小程序  自定义创建详细介绍
Oct 27 #Javascript
vue中渐进过渡效果实现
Oct 27 #Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
Oct 27 #Javascript
真正好用的js验证上传文件大小的简单方法
Oct 27 #Javascript
vue的props实现子组件随父组件一起变化
Oct 27 #Javascript
You might like
php 中include()与require()的对比
2006/10/09 PHP
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
PHP测试程序运行时间的类
2012/02/05 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
PDO::setAttribute讲解
2019/01/29 PHP
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
Python中if __name__ == "__main__"详细解释
2014/10/21 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
python用10行代码实现对黄色图片的检测功能
2015/08/10 Python
详解Python下ftp上传文件linux服务器
2018/06/21 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
python如何求圆的面积
2020/07/01 Python
python爬虫请求头的使用
2020/12/01 Python
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
求职自荐信
2013/12/14 职场文书
协议书与合同的区别
2014/04/18 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
婚礼新人答谢词
2015/01/04 职场文书
高一英语教学反思
2016/03/03 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
Python  lambda匿名函数和三元运算符
2022/04/19 Python
vue动态绑定style样式
2022/04/20 Vue.js
Hive常用日期格式转换语法
2022/06/25 数据库