微信小程序  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 相关文章推荐
Javascript 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
javascript全局变量封装模块实现代码
Nov 28 Javascript
通过JavaScript使Div居中并随网页大小改变而改变
Jun 24 Javascript
js模仿php中strtotime()与date()函数实现方法
Aug 11 Javascript
jquery实现的Accordion折叠面板效果代码
Sep 02 Javascript
微信企业号开发之微信考勤Cookies的使用
Sep 11 Javascript
微信小程序模板之分页滑动栏
Feb 10 Javascript
走进AngularJs之过滤器(filter)详解
Feb 17 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
了解javascript中let和var及const关键字的区别
May 24 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实现多级树型菜单
2006/10/09 PHP
PHP 日常开发小技巧
2009/09/23 PHP
Php-Redis安装测试笔记
2015/03/05 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
2015/05/21 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
淘宝搜索框效果实现分析
2011/03/05 Javascript
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
TypeScript类型声明书写详解
2019/08/28 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
利用Python为iOS10生成图标和截屏
2016/09/24 Python
python得到电脑的开机时间方法
2018/10/15 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
直接有效的自我评价
2014/01/11 职场文书
给校长的一封建议书
2014/03/12 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
超市采购员岗位职责
2015/04/07 职场文书
2015年度酒店客房部工作总结
2015/05/25 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers