前些日子做个H5嵌入手机的应用,用到了mustache.js,于是就做个如下的简单介绍,如有错误请指出,万分感谢。最后会把项目中的如何用怎么用会贴出部分代码。mustache.js 它是一个javascript的模板引擎库,就像java模板引擎velocity一样,只是提供展示信息的模板,其语法简单明了,容易上手。

一个简单的demo:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title><script src="js/jquery-1.10.2.min.js"></script><script src="js/mustache.js" ></script></head><body><div id="box"><script id='template'>{{name}}</script></div></body><script>var data = {"name":"wb","age" :27,"birth":"10-06","school":"阜阳师范","major":["数学","计算机"],"has_car":false,"car":null,"has_house":true,"msg":{"hate":"dog","love":"beautiful girl"}}$("#box").append(Mustache.render($('#template').html(),data));</script>
</html>

1. {{name}}

{{ }}就是 mustache 输出值得简单格式,花括号中为json的key值。直接运行上述html,会看到结果为:wb

2. {{#major}} {{/major}}

以#开始、以/结束表示区块,可以一次或多次渲染内容有if、foreach功能。修改如下:<script id='template'>{{#major}}{{.}}{{/major}}</script>输出:数学 计算机
注意:如果{{#major}} {{/major}}中的 major值为 null, undefined, false;则不渲染输出任何内容。

3. {{^car}} {{/car}}

和第2个语法差不多,只不过当值为 null, undefined, false 时才渲染输出该区块内容。<script id='template'>{{^car}}"当值为 null, undefined, false 时才渲染输出该区块内容";{{/car}}</script>
输出:当值为 null, undefined, false 时才渲染输出该区块内容     

4. {{.}}

表示集合中的枚举,如实例2

5. {{>parent}}

以>符号表示子模块,可以将复杂的结构拆分为多个子模块。如下:<script id='template'><ul>{{>msg}}</ul></script>var son = {"msg":"{{#msg}} <li>{{hate}}</li> <li>{{love}}</li> {{/msg}}"}$("#box").append(Mustache.render($('#template').html(),data,son));输出:dogbeautiful girl

6. {{!comments}}

以!开头,为注释说明内容,不渲染该内容,如下:
<script id='template'>{{!这里是注释}}{{name}}</script>
输出:wb

下面是在项目中的应用:
1. 通过ajax,返回数据data,成功后遍历data。js文件:

 var feedbackList = [];//遍历列表for(var i=0;i<data.list.length;i++){var id = data.list[i].id;var createTimeStr = data.list[i].createTimeStr;var questionDesc = data.list[i].questionDesc;var billTypeName = data.list[i].billTypeName;var billCode =  data.list[i].billCode;// 放入预先准备好的集合中                           feedbackList.push({"id":id,"createTimeStr":createTimeStr,"questionDesc":questionDesc,"billTypeName":billTypeName,"billCode":billCode});}var renderData = {"feedbackList":feedbackList};$(".recordBox").append(Mustache.render($('#template').html(), renderData));
  1. 渲染html上的模板:
<div class="recordBox"><script type='text/x-mustance' id='template'>{{#feedbackList}}<div class='tab'><div class='e-row recordItem'><a href='/feedback/queryDetail?id={{id}}'><h4><b>{{createTimeStr}}</b><span>NO.{{id}}</span></h4><p>{{questionDesc}}</p><div>{{#billTypeName}} {{billTypeName}}:{{billCode}}{{/billTypeName}}</div></a></div></div>{{/feedbackList}}</script></div>

mustache 的使用相关推荐

  1. mustache 渲染文本一直渲染不出来

    今天在模板上页面上渲染文本 但是渲染了半天,什么也没有渲染出来 为什么呢,你看我前台的html页面如此: <script type="text/x-template" id= ...

  2. Mustache初识

    一.Mustache 简介: Mustache 是一个轻逻辑模板解析引擎,它的优势在于可以应用在 Javascript.PHP.Python.Perl 等多种编程语言中. 二.Mustache 语法: ...

  3. mustache模板技术

    一.简介 Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 HTML 文档.当然不同的开发语言有不同模板引擎,如 Javascript 下的 Ho ...

  4. Mustache.js和Handlebars.js有什么区别?

    本文翻译自:What are the differences between Mustache.js and Handlebars.js? Major differences I've seen ar ...

  5. mustache语法 转自小花大方

    mustache语法 mustache 模板,用于构造html页面内容.在实际工作中,当同一个模板中想要调用不同的函数来渲染画面,在已经自定义好了的前提下,可以在渲染页面时对传入的参数进行手动判断.[ ...

  6. Web模板引擎—Mustache

    Web模板引擎--Mustache 2012年9月12日 BY BELL·12 COMMENTS Web 模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,通常是标准的 ...

  7. Mustache 中的html转义问题处理

    避免在使用Mustache引擎是发生html字符转义 1,模板代码示例:     var xml= " <?xml version="1.0" encoding=& ...

  8. javascript库之Mustache库使用说明

    一.简单示例 代码: 1 function show(t) { 2 $("#content").html(t); 3 } 4 5 var view = { 6 title: 'YZ ...

  9. Mustache.js使用笔记(内容属于转载总结)

    1.Mustache的语法很简单,用两个大括号标记要绑定的字段即可,"{{}}" Mustache主要的渲染方法为Mustache.render(),该方法有两个参数,第一个为要渲 ...

  10. mustache,用{{}}获取值

    {{}}是属于java mustache  controller类设置保存对象值 在cars-common中有引入mustache.js,web再引入cars-common.jar包 <bean ...

最新文章

  1. 第一篇博客,纪念一下,终于开通啦!
  2. Visual C#弹出窗口杀手
  3. Mac下chrome的webapp hostadmin 快速切换host
  4. Laravel 框架安装
  5. docker可以把应用及其相关的_Docker相关命令应用
  6. 这几种程序员前途无量!你在其中吗?
  7. AtCoder Regular Contest 058
  8. C#中跨窗体操作(1)--事件
  9. python画图去掉边框
  10. python实现冒泡排序算法的非递归版本_冒泡排序以及python代码实现(递归+非递归)...
  11. 42 MM配置-采购-条件-定义工厂层的条件控制
  12. 银行卡号定位与识别系统
  13. python中如何下载安装库
  14. 无敌论坛_无敌分享网_无敌资源网|专注CG教程和素材分享
  15. c语言程序设计基本模板,《C语言程序设计基础教程》试讲教案模板
  16. ECCV2022|腾讯优图开源DisCo:拯救小模型在自监督学习中的效果
  17. FPGA采集AD7606串行输源码加讲解
  18. Node——npm常用命令
  19. 报表数据源之JSON
  20. CSS 去掉点li 的点

热门文章

  1. Triple loss
  2. php 短信验证登录,短信验证码注册登录的实现,php接入的3种方法(附示例)
  3. java实现的霍纳规则的多项式计算
  4. 学习曲线learning curve
  5. 2017年热门的9大技术领域
  6. OpenCV(九)—————图像通道合并与分离(C++)
  7. Android 弹出对话框怎么做?(小白速成9)
  8. poj 3259 时光穿梭问题 bellman_ford算法
  9. Win10 下使用OpenJDK,并配置 JAVA_HOME
  10. abcde依次进入一个队列_一个队列的入队序列为:abcde,则队列的出队序列是( )。