标签: mustache

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

我见过的主要差异是:

  • 把手增加了#if,#unless,#with,和#each
  • 把手增加了助手
  • 处理句柄模板(Mustache也可以)
  • 把手支持路径
  • 允许使用{{this}}in块(输出当前项的字符串值)
  • Handlebars.SafeString() (也许还有其他一些方法)
  • 把手的速度提高了2到7倍
  • 胡子支持倒置部分(即if !x ...)

(如果我对上述内容有误,请纠正我.)

我还缺少其他重大差异吗?

templating-engine mustache client-side-templating handlebars.js

321
推荐指数
8
解决办法
12万
查看次数

如何在mustache.js中完成if/else?

似乎很奇怪,我无法想象如何在胡子中做到这一点.是否支持?

这是我尝试的悲伤尝试:

    {{#author}}
      {{#avatar}}
        <img src="{{avatar}}"/>
      {{/avatar}}
      {{#!avatar}}
        <img src="/images/default_avatar.png" height="75" width="75" />
      {{/avatar}}
    {{/author}}
Run Code Online (Sandbox Code Playgroud)

这显然是不对的,但文档中没有提到这样的事情.甚至没有提到"其他"这个词:(

另外,为什么胡子是这样设计的?这种事情被认为是坏事吗?它是否试图强迫我在模型中设置默认值?那些不可能的情况怎么样?

javascript templates mustache

247
推荐指数
4
解决办法
18万
查看次数

把手/胡子 - 是否有内置的方式来循环对象的属性?

正如问题的标题所说,是否有胡子/把手循环对象属性的方式?

所以

var o = {
  bob : 'For sure',
  roger: 'Unknown',
  donkey: 'What an ass'
}
Run Code Online (Sandbox Code Playgroud)

我可以在模板引擎中做一些相当于的事情

for(var prop in o)
{
    // with say, prop a variable in the template and value the property value
}
Run Code Online (Sandbox Code Playgroud)

javascript mustache handlebars.js

206
推荐指数
4
解决办法
11万
查看次数

小胡子可以迭代一个顶级数组吗?

我的对象看起来像这样:

['foo','bar','baz']
Run Code Online (Sandbox Code Playgroud)

我想使用胡子模板从中产生这样的东西:

"<ul><li>foo</li><li>bar</li><li>baz</li></ul>"
Run Code Online (Sandbox Code Playgroud)

但是怎么样?我真的必须先把它搞得像这样吗?

{list:['foo','bar','baz']}
Run Code Online (Sandbox Code Playgroud)

javascript mustache

106
推荐指数
3
解决办法
6万
查看次数

无逻辑模板(如胡子)的优势是什么?

最近,我遇到了声称是无逻辑模板的小胡子.

但是,没有解释为什么它采用无逻辑方式设计.换句话说,无逻辑模板的优势是什么?

templates mustache

98
推荐指数
10
解决办法
4万
查看次数

是否可以使用标准库在Go中嵌套模板?(Google App Engine)

如何在python运行时获得像Jin​​ja这样的嵌套模板.TBC我的意思是如何从基本模板继承一堆模板,只需在基本模板的块中归档,就像Jinja/django-templates一样.是否可以html/template在标准库中使用.

如果这不可能,我的替代方案是什么.小胡子似乎是一个选项,但我会错过那些html/template像上下文敏感的逃避等的微妙的功能?还有什么其他选择?

(环境:Google App Engin,Go runtime v1,Dev - Mac OSx lion)

谢谢阅读.

google-app-engine template-engine go mustache

82
推荐指数
5
解决办法
2万
查看次数

在Mustache模板中是否有一种表达逗号分隔列表而没有尾随逗号的优雅方式?

我正在使用Mustache模板库并尝试生成逗号分隔列表而不带尾随逗号,例如

红色,绿色,蓝色

在给定结构的情况下,使用尾随逗号创建列表很简单

{
  "items": [
    {"name": "red"},
    {"name": "green"},
    {"name": "blue"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

和模板

{{#items}}{{name}}, {{/items}}
Run Code Online (Sandbox Code Playgroud)

这将解决

红色,绿色,蓝色,

但是,在没有尾随逗号的情况下,我无法看到表达案例的优雅方式.我总是可以在将代码传递到模板之前在代码中生成列表,但我想知道库是否提供了另一种方法,例如允许您检测它是否是模板中列表中的最后一项.

mustache

81
推荐指数
8
解决办法
3万
查看次数

jQuery +客户端模板="语法错误,无法识别的表达式"

我刚刚将jQuery从1.8.3更新到1.9,它突然崩溃了.

这是我的模板:

<script type="text/template" id="modal_template">
    <div>hello</div>
</script>
Run Code Online (Sandbox Code Playgroud)

这就是我读它的方式:

modal_template_html = $("#modal_template").html();
Run Code Online (Sandbox Code Playgroud)

这是我如何将其转换为jQuery对象(我需要在其上使用jQuery方法):

template = $(modal_template_html);
Run Code Online (Sandbox Code Playgroud)

...和jQuery崩溃了!

错误:语法错误,无法识别的表达式:<div> hello </ div>

slice.call(docElem.childNodes,0)[0] .nodeType;

jquery-1.9.0.js(第3811行)

但是,如果我将模板声明为纯文本变量,它将再次开始工作:

var modal_template_html = '<div>hello</div>';
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?

UPDATE:jQuery开发团队听取并改变在1.10一切恢复正常:

您可能会看到的最大变化是我们放宽了$()中HTML处理的标准,允许前导空格和换行符,就像我们在1.9版之前所做的那样

javascript jquery mustache

59
推荐指数
3
解决办法
12万
查看次数

在Mustache中,如何获取当前Section的索引

我正在使用Mustache并使用数据

{ "names": [ {"name":"John"}, {"name":"Mary"} ] }
Run Code Online (Sandbox Code Playgroud)

我的小胡子模板是:

{{#names}}
    {{name}}
{{/names}}
Run Code Online (Sandbox Code Playgroud)

我想要做的是获得数组中当前数字的索引.就像是:

{{#names}}
    {{name}} is {{index}}
{{/names}}
Run Code Online (Sandbox Code Playgroud)

打印出来

John is 1
Mary is 2
Run Code Online (Sandbox Code Playgroud)

是否可以使用Mustache获得此功能?或使用把手或其他扩展?

templates mustache

55
推荐指数
5
解决办法
5万
查看次数

内部的小胡子模板字符串呈现为HTML

我正在使用Mustache来呈现模板.

我有这个json对象:

  {
    title: "Foo bar", 
    content: "<p> Html here </p>", 
    footer: "footer content here"
  }
Run Code Online (Sandbox Code Playgroud)

我有一个Mustache模板,如:

  <div id="box">
    <div id="title"> {{title}} </div> 
    <div id="content"> {{content}} </div> 
    <div id="footer"> {{footer}} </div> 
  </div>
Run Code Online (Sandbox Code Playgroud)

我的问题是变量内容中的html没有被渲染,而只是被打印到屏幕上.

我看到(在非视图源窗口中)<p> Html here </p>:,如果我查看页面源,我只想看到它.

我怎么能解决这个问题,当我将一个字符串传递给一个小胡子模板时,HTML内部会被渲染?我在调用mustache.render(templates.all,data); 我打电话给小胡子.

html javascript jquery mustache

55
推荐指数
1
解决办法
3万
查看次数