将Express与Don Park的HBS一起用作视图引擎,目的是为客户端和服务器代码使用相同的模板样式。但是我遇到了一些麻烦。
这里显示的是index.hbs,
<h1>{{title}}</h1>
<p>Welcome to {{title}}</p>
<div id="place"></div>
<script id="firstTemplate" type="text/x-handlebars-template">
<ul>
{{#lines}}
<li>{{name}}</li>
{{/lines}}
</ul>
</script>
继承人向浏览器呈现的内容:
<h1>Express</h1>
<p>Welcome to Express</p>
<div id="place"></div>
<script id="firstTemplate" type="text/x-handlebars-template">
<ul>
</ul>
</script>
Express View渲染过程似乎消耗了用于浏览器的模板块。据我所知,视图渲染器只是将整个file.hbs作为字符串模板进行渲染,而不是将脚本块与服务器视图区分开来。
有关此的任何想法/解决方法吗?
答案 0 :(得分:1)
我以同样的方式使用Handlebars并遇到了同样的问题。
我通过存储这部分来解决这个问题:
<script id="firstTemplate" type="text/x-handlebars-template">
<ul>
{{#lines}}
<li>{{name}}</li>
{{/lines}}
</ul>
</script>
在单独的静态文件中,然后在页面呈现后通过ajax加载它。这样,我的客户端模板不会被Express错误地呈现。
如果有一种方法可以添加一个标记让Express知道忽略这样的块并将它们保留给客户端那么会很好。
答案 1 :(得分:1)
如果把手与Mustache真正兼容,那么这应该有效:
首先将它放在模板顶部的某个位置(在任何模板占位符之前)更改分隔符
{{=<% %>=}}
所以现在你想要服务器呈现的任何东西:
<% foo %>
你想要在客户端呈现的任何东西都是这样的:
{{ bar }}
更多信息位于Mustache手册的底部 - http://mustache.github.com/mustache.5.html
答案 2 :(得分:0)
对于把手,你可以使用反斜杠来逃避双括号,如下所示:
remotes/origin/HEAD