微信小程序  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 相关文章推荐
25个非常棒的jQuery滑块插件和教程小结
Sep 02 Javascript
浅谈页面装载js及性能分析方法
Dec 09 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
JS排序之冒泡排序详解
Apr 08 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
Sep 18 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
Jun 25 Javascript
Node.js原生api搭建web服务器的方法步骤
Feb 15 Javascript
JavaScript实现图片上传并预览并提交ajax
Sep 30 Javascript
vue-dplayer 视频播放器实例代码
Nov 08 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 Javascript
Vue父子之间值传递的实例教程
Jul 02 Javascript
Vue页面跳转传递参数及接收方式
Sep 09 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提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
thinkPHP统计排行与分页显示功能示例
2016/12/02 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
jQuery插件制作之参数用法实例分析
2015/06/01 Javascript
学习JavaScript正则表达式
2015/11/13 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
angularJs中$http获取后台数据的实例讲解
2018/08/08 Javascript
微信小程序之数据绑定原理解析
2019/08/14 Javascript
简述Python中的面向对象编程的概念
2015/04/27 Python
在Python的Django框架中创建语言文件
2015/07/27 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
video下autoplay属性无效的解决方法(添加muted属性)
2020/05/19 HTML / CSS
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
如何进行Linux分区优化
2016/09/13 面试题
自我鉴定范文200字
2013/10/02 职场文书
高三学生评语大全
2014/04/25 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
python解析照片拍摄时间进行图片整理
2022/07/23 Python