一、简单示例

代码:

 1             function show(t) { 2                 $("#content").html(t); 3             } 4  5             var view = { 6                 title: 'YZF', 7                 cacl: function () { 8                     return 6 + 4; 9                 }10             };11             $("#content").html(Mustache.render("`title` spends `cacl`", view));

结果:

YZF spends 10

结论:

可以很明显的看出Mustache模板的语法,只需要使用{{和}}包含起来就可以了,里面放上对象的名称。

通过本示例也可以看出,如果指定的属性为函数的时候,不会输出函数里面的内容,而是先执行函数,然后将返回的结果显示出来。

二、不转义html标签

代码:

1             var view = {2                 name: "YZF",3                 company: "<b>ninesoft</b>"4             };5             show(Mustache.render("`name` <br /> `company` <br />{`company`}<br/>{{&company}}", view));

 结果:

结论:

通过这个示例可以看出Mustache默认是会将值里面的html标记进行转义的,但是有时候我们并不需要。

所以这里我们可以使用{{{和}}}包含起来,或者是{{&和}}包含,那么Mustache就不会转义里面的html标记。

三、绑定子属性的值

代码:

1             var view = {2                 "name": {3                     first: "Y",4                     second: "zf"5                 },6                 "age": 217             };8             show(Mustache.render("`name`.`first``name`.`second` age is `age`", view));

 结果:

结论:

相信看到第一个示例的时候,就会有人想到能不能绑定子属性,如果你努力看下去了。

那么祝贺你,现在就是解决你的需求的方式,仅仅只需要通过.来使用子属性即可。

四、条件式选择是否渲染指定部分

代码:

1             var view = {2                 person: false3             };4             show(Mustache.render("eff{{#person}}abc{{/person}}", view));

 结果:

结论:

问题总是不断,如果我们还需要能够根据我们给的值,决定是否渲染某个部分。

那么现在就可以解决这个问题,当然还要提示的就是不仅仅是false会导致不渲染指定部分。

null,空数组,0,空字符串一样有效。语法上面比较简单,就是使用{{#key}} ... {{/key}}

来控制中间的内容。

五、循环输出

代码:

1             var view = {2                 stooges: [3                     { "name": "Moe" },4                     { "name": "Larry" },5                     { "name": "Curly" }6                 ]7             };8             show(Mustache.render("{{#stooges}}`name`<br />{{/stooges}}", view));

结果:

结论:

仅仅学会上面的方式,大部分地方你都解决了,但是还是会出现麻烦的地方。

就是循环输出,如果你一个一个写,相信会很烦躁,当然Mustache不会让我们失望,

它也给出了如何循环输出的方式,这里是将一个由对象组成的数组输出,如果我们

输出的是数组,就需要使用``.``来替代`name`。

六、循环输出指定函数处理后返回的值

代码:

 1             var view = { 2                 "beatles": [ 3                     { "firstname": "Johh", "lastname": "Lennon" }, 4                     { "firstname": "Paul", "lastname": "McCartney" } 5                 ], 6                 "name": function () { 7                     return this.firstname + this.lastname; 8                 } 9             };10             show(Mustache.render("{{#beatles}}`name`<br />{{/beatles}}", view));

 结果:

结论:

循环输出是有了,但是我们还想后期进行加工。那么这个完全符合你的需要,因为Mustache会将

数组中的值传递给你的函数,输出你函数返回的值。这里我们可以看到最外层是数组,只要在里面

使用函数那么外层的数组就会作为这个函数的参数传递进去。

七、自定义函数

代码:

1             var view = {2                 "name": "Tater",3                 "bold": function () {4                     return function (text, render) {5                        return render(text) + "<br />";6                     }7                 }8             }9             show(Mustache.render("{{#bold}}`name`{{/bold}}", view));

 结果:

结论:

上面我们都是用的变量作为节,那么我们现在用函数作为节,会有什么效果呢。

它会调用我们函数返回的函数,将节中间的原始字符串作为第一个参数,默认

的解释器作为第二个参数,那么我们就可以自行加工。

八、反义节

代码:

1 var view = {2                 "repos": []3             };4             show(Mustache.render("{{#repos}}``.``{{/repos}}{{^repos}}no repos{{/repos}}", view));

结果:

结论:

上面我们也用节,但是仅仅只能选择是否输出某个部分。所以这里我们弥补一下。

如果我们使用了{{^和}}来定义节的话,那么这个部分只会在里面的值为空,null,

空数组,空字符串的时候才会显示。那么我们就可以实现了if else的效果了。

九、部分模板

代码:

 1             var view = { 2                 names: [ 3                     { "name": "y" }, 4                     { "name": "z" }, 5                     { "name": "f" } 6                 ] 7             }; 8             var base = "<h2>Names</h2>{{#names}}{{>user}}{{/names}}"; 9             var name = "<b>`name`</b>";10             show(Mustache.render(base, view, { user: name }));

 结果:

结论:

Mustache虽然节约了很多时间,但是我们定义了很多模板,但是彼此之间无法互相嵌套使用,也会造成繁琐。

所以这里我们还要介绍如何定义部分模板,用来在其他模板里面使用,这里使用其他模板的方式仅仅是{{>templetename}}。

最大的不同就是Mustache.render方法有了第三个参数。

十、预编译模板

代码:

1             Mustache.parse(template);2             //其他代码3             Mustache.render(template,view);

结论:

模板既然有好处,也有坏处。就是编译模板需要时间,所以在我们已知会使用某个模板的前提下,我们可以预先编译好这个模板,以便后面的使用。

Xamarin.Android -> Xamarin.IOS -> 混合 -> Xamarin.Forms

本文转自  陈小龙哈   51CTO博客,原文链接:http://blog.51cto.com/chenxiaolong/1702239

javascript库之Mustache库使用说明相关推荐

  1. 后端返回number类型数据_【JavaScript 教程】标准库—Number 对象

    作者 | 阮一峰 1.概述 Number对象是数值对应的包装对象,可以作为构造函数使用,也可以作为工具函数使用. 作为构造函数时,它用于生成值为数值的对象. var n = new Number(1) ...

  2. 对象数组参数_【JavaScript 教程】标准库—Array 对象

    作者 | 阮一峰 1.构造函数 Array是 JavaScript 的原生对象,同时也是一个构造函数,可以用它生成新的数组. var arr = new Array(2);arr.length // ...

  3. 15个最佳的 JavaScript 表单验证库

    客户端验证在任何项目都是不够的,因为 JavaScript 可以直接忽略,人们可以提交请求到服务器. 然而这并不意味着客户端验证都没必要了,很多时候我们需要在用户提交到服务器之前给予提示.JavaSc ...

  4. 字符串处理_5个JavaScript的字符串处理库,不再996

    处理大小写转换,删除字母符号,Unicode处理,URL处理等 使用字符串可能是一项繁琐的任务,因为有许多不同的用例.例如,将字符串转换为驼峰大小写这样的简单任务可能需要几行代码才能达到最终目标. f ...

  5. JavaScript的RSA加密库(cryptico、Node-rsa、Crypto、jsrsasign、JSEncrypt)

    JavaScript的RSA加密库 一.Rsa利用openssl生成公钥私钥 1.安装openssl: 2.生成公钥: 3.生成私钥: 二.Cryptico 1.优点: 2.缺点: 3.安装: 4.D ...

  6. 15个非常实用的JavaScript表单验证库

    来源:web前端开发 https://mp.weixin.qq.com/s/p9s9cmAt2MZeCgmD2LC5Sg 客户端验证在任何项目都是不可缺少的,很多时候我们需要在用户提交到服务器之前给予 ...

  7. JavaScript之第三方开源库(underscore)学习篇

    JavaScript之第三方开源库(underscore)学习篇 第三方开源库underscore 分类功能 数组操作 高阶函数 面向对象函数 链式调用 第三方开源库underscore JavaSc ...

  8. 年度最佳 JavaScript和CSS 开源库推荐!

    原文:https://tutorialzine.com/2017/12/the-best-javascript-and-css-libraries-for-2017 前不久,Tutorialzine ...

  9. 2017 年度最佳 JavaScript 和 CSS 开源库推荐!

    来源:开源最前线 猿妹编译 链接:https://tutorialzine.com/2017/12/the-best-javascript-and-css-libraries-for-2017(点击尾 ...

最新文章

  1. 兄弟俩都是院士!哥哥在南大,弟弟在复旦
  2. 第十六章 tcp_wrappers
  3. [转]面向GPU的多LOD因子的大规模场景可视化策略
  4. 爬虫推特数据分析的外文文献_13天让你学会爬虫分布式,说到让你做到择推出it届附教程...
  5. listbox批量添加
  6. 搜索推荐项目EFLS开源 | 阿里妈妈联邦学习解决方案详解
  7. poj 2186(强连通分量)
  8. 机敏问答[博弈][0] #20210628
  9. QT 5.9.5的快捷键操作
  10. Java实现的中间库
  11. 路由器与交换机工作过程详解!!!
  12. 同城聚合平台v59.4.0 本地同城 同城信息 同城商家
  13. 常见的名片尺寸如何在CorelDRAW预设
  14. word显示隐藏格式清除残留格式
  15. BurnInTest测试固态硬盘详解
  16. win10打开蓝牙,蓝牙开关消失,蓝牙和其他设备设置,蓝牙开关不见了
  17. 制药机械设备远程监控及故障预警维护管理系统
  18. 安卓手机软件开发_安卓最牛的下载神器,快收藏起来自己偷偷用
  19. 魔影工厂 – 免费简单易用的全能视频格式转换工具
  20. mac版idea下载(亲测有效)

热门文章

  1. python函数增强代码可读性_写Python必须知道的这几个代码技巧!你会吗?
  2. oracle数据库11gr2,Oracle 11g R2 X64数据库安装
  3. Ubuntu下安装Pycharm及相关设置
  4. java基础之XML
  5. axios发送自定义请求头的跨域解决
  6. 基于Docker的GoldenGate部署
  7. Oracle Imp and Exp (导入和导出) 数据 工具使用
  8. stack overflow at line
  9. Ajax — 大事件项目(第二天)
  10. P3865 【模板】ST表