博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mustache
阅读量:5172 次
发布时间:2019-06-13

本文共 1966 字,大约阅读时间需要 6 分钟。

a3cf700e-2f02-11e5-869a-300312fb7a00.gif

简要介绍

玩过node的人应该都知道ejs,jade。 和他们一样都是模板渲染引擎,我个人喜欢mustache,因为他非常简洁,代码量才600多行。

mustache既可以在前端使用,也可以在后端使用。对于文档里面有的内容,这里就不摘抄了,没什么意思,记录一下文档里面讲解不清楚的地方。

使用模板

mustache有一点不是太好,他的模板无法通过指定模板的位置来加载渲染,必须读取出模板内容之后才能进行渲染。这都无所谓的,如果在后端需要从文件读取模板的话,稍稍写一下

就可以了。下面给出测试代码。

  • 主文件
//Created by yyrdl on 2015/10/2.var Mustache=require("mustache");var tool=require("./readFile");var view={    names:[{        "name":'zj'    },{        "name":"yyrdl"    }]};var tems=["./templates/base.mustache","./templates/user.mustache"];var tasks=tems.map(function(path){    return new Promise(function(resolve,reject){        tool.readFile(path,function(err,res){            if(err){                reject(err);            }else{                resolve(res);            }        });    })});Promise.all(tasks).then(function(results){    var out=Mustache.render(results[0],view,{        user:results[1]    });    console.log(out);});
  • base.mustache

Names

{
{#names}} {
{> user}}{
{/names}}
  • user.mustache
{
{name}}
  • 项目结构

    737952-20151002202910324-1092932566.png

  • 输出结果

    737952-20151002202946105-1430108112.png

基本的mustache语法还请看官网的介绍。在base.mustache里我们使用 {

{>user}}引用了外部模板user,user的内容在
Mustache.render()的第三个参数里有指明.

条件编译

在ejs里可以使用if else 语句,不过是嵌在模板里,嵌多了就感觉乱糟糟的,在mustache里面不用!

{
{#repos}}{
{name}}
{
{/repos}}{
{^repos}}No repos :({
{/repos}}

如果在传入的数据中repos字段存在,并且 !repos!==true 则上面的第一行将会被渲染,而第二行将被忽略;反之则结果想反。比如:

var template="{
{#repos}}{
{name}}
{
{/repos}}"+ "{
{^repos}}No repos :({
{/repos}}"; var data={ "repos":[{"name":"zj"}] } var out=Mustache.render(template,data); // the result is: zj

将第一个例子中的base.mustache这样写

Names

{
{#st}} {
{#names}} {
{> user}} {
{/names}}{
{/st}}

然后将主文件中的view改为:

var view={    show:false,    names:[{        "name":"zj"    },{        "name":"yyrdl"    }],    st:function(){      return this.show;    }};

输出的结果为:

737952-20151002205119574-1649189473.png

大概你已经看出,我们大可以只改变view中show的值来决定输出了,从这里可以看出mustache的灵活,也显出他的强大.


下面是将view.show=true的输出

737952-20151002210152590-966191642.png
---记录,分享

转载于:https://www.cnblogs.com/yyrdl/p/4852680.html

你可能感兴趣的文章
sizeof与strlen的用法
查看>>
Linux 下常见目录及其功能
查看>>
开源框架中常用的php函数
查看>>
nginx 的提升多个小文件访问的性能模块
查看>>
set&map
查看>>
集合类总结
查看>>
4.AE中的缩放,书签
查看>>
1.开发准备
查看>>
centos su命令
查看>>
CLR:基元类型、引用类型和值类型
查看>>
dubbo序列化hibernate.LazyInitializationException could not initialize proxy - no Session懒加载异常的解决...
查看>>
jQuery中的事件绑定的几种方式
查看>>
泥塑课
查看>>
setImageBitmap和setImageResource
查看>>
springMVC4 注解配置实例
查看>>
单片机编程
查看>>
Filter in Servlet
查看>>
Linux--SquashFS
查看>>
Application Pool Identities
查看>>
2017-3-24 开通博客园
查看>>