微信小程序  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 相关文章推荐
Prototype使用指南之ajax
Jan 10 Javascript
基于jquery的拖动布局插件
Nov 25 Javascript
妙用Jquery的val()方法
Jun 27 Javascript
js操纵dom生成下拉列表框的方法
Feb 24 Javascript
js数组方法扩展实现数组统计函数
Apr 09 Javascript
JS、DOM和JQuery之间的关系示例分析
Apr 09 Javascript
原生JavaScript生成GUID的实现示例
Sep 05 Javascript
在AngularJS中使用AJAX的方法
Jun 17 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
实例讲解v-if和v-show的区别
Jan 31 Javascript
js实现倒计时秒杀效果
Mar 25 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自动生成后台导航网址的最佳方法
2013/08/27 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
2013/04/17 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
python如何读写csv数据
2018/03/21 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
python 获取字典键值对的实现
2020/11/12 Python
HTML5 WebGL 实现民航客机飞行监控系统
2019/07/25 HTML / CSS
美工的岗位职责
2013/11/14 职场文书
新文化运动的基本口号
2014/06/21 职场文书
2014年女职工工作总结
2014/11/27 职场文书
期中考试后的感想
2015/08/07 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS