微信小程序  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 相关文章推荐
URI、URL和URN之间的区别与联系
Dec 20 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
jquery.qrcode在线生成二维码使用示例
Aug 21 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
Dec 08 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
Dec 29 Javascript
微信小程序 swiper制作tab切换实现附源码
Jan 21 Javascript
js中setTimeout的妙用--防止循环超时
Mar 06 Javascript
jquery.validate表单验证插件使用详解
Jun 21 jQuery
使用Vue完成一个简单的todolist的方法
Dec 01 Javascript
vue小白入门教程
Apr 02 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
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
微信支付的开发流程详解
2016/09/13 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
php 中self,this的区别和操作方法实例分析
2019/11/04 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
2016/08/30 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
python 搜索大文件的实例代码
2019/07/08 Python
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
举例说明类变量和实例变量的区别
2016/06/30 面试题
英语生日邀请函
2014/01/23 职场文书
三八活动策划方案
2014/08/17 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
2014年建筑工作总结
2014/11/26 职场文书
自我检讨书范文
2015/01/28 职场文书
亮剑观后感600字
2015/06/05 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
如何解决php-fpm启动不了问题
2021/11/17 PHP
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
解析python中的jsonpath 提取器
2022/01/18 Python