微信小程序  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 相关文章推荐
js判断是否为数组的函数: isArray()
Oct 30 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
Jan 02 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
javascript中sort()的用法实例分析
Jan 30 Javascript
浏览器兼容性问题大汇总
Dec 17 Javascript
JS实现队列与堆栈的方法
Apr 21 Javascript
浅谈jquery中使用canvas的问题
Oct 10 Javascript
js中new一个对象的过程
Feb 20 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
Jul 12 jQuery
Vue 实时监听窗口变化 windowresize的两种方法
Nov 06 Javascript
VUE+Element环境搭建与安装的方法步骤
Jan 24 Javascript
React组件对子组件children进行加强的方法
Jun 23 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中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
ioncube_loader_win_5.2.dll的错误解决方法
2015/01/04 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
jquery $.ajax入门应用一
2008/11/19 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
Jquery 扩展方法
2010/05/06 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
详解如何实现一个简单的Node.js脚手架
2017/12/04 Javascript
基于Axios 常用的请求方法别名(详解)
2018/03/13 Javascript
angular6.0开发教程之如何安装angular6.0框架
2018/06/29 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
Python探索之URL Dispatcher实例详解
2017/10/28 Python
关于反爬虫的一些简单总结
2017/12/13 Python
详解爬虫被封的问题
2019/04/23 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
如何关掉pycharm中的python console(图解)
2019/10/31 Python
python将时分秒转换成秒的实例
2019/12/07 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
linux面试题参考答案(7)
2014/07/24 面试题
党性分析自查总结
2014/10/14 职场文书
优秀团员事迹材料
2014/12/25 职场文书
2015年个人思想总结
2015/03/09 职场文书
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL