微信小程序  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 相关文章推荐
use jscript List Installed Software
Jun 11 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
Sep 19 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
Jan 15 Javascript
javascript qq右下角滑出窗口 sheyMsg
Mar 21 Javascript
JavaScript打开word文档的实现代码(c#)
Apr 16 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 Javascript
angular4自定义表单控件[(ngModel)]的实现
Nov 23 Javascript
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
js实现鼠标拖拽缩放div实例代码
Mar 25 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 Javascript
vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能
Nov 16 Javascript
利用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
构建简单的Webmail系统
2006/10/09 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
PHP的中使用非缓冲模式查询数据库的方法
2017/02/05 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
Javascript 文件夹选择框的两种解决方案
2009/07/01 Javascript
JS 参数传递的实际应用代码分析
2009/09/13 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
js文本框输入内容智能提示效果
2015/12/02 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
jupyter notebook更换皮肤主题的实现
2021/01/07 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
三项教育活动实施方案
2014/03/30 职场文书
报关报检委托书
2014/04/08 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
MySQL 原理与优化之Update 优化
2022/08/14 MySQL