Node.js 使用HBS条带(消耗?)把手客户端模板进行快速视图渲染

Node.js 使用HBS条带(消耗?)把手客户端模板进行快速视图渲染,node.js,express,Node.js,Express,使用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-templat

使用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>
{{title}
欢迎来到{{title}

    {{#行}
  • {{name}}
  • {{/行}
以下是渲染到浏览器的内容:

<h1>Express</h1>
<p>Welcome to Express</p>

<div id="place"></div>

<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>

  </ul>
</script>
Express
欢迎收看快报

“快速视图”渲染过程似乎已使用了要在浏览器中使用的模板块。据我所知,视图渲染器只是将整个file.hbs作为一个字符串tempate进行渲染,而不区分脚本块和服务器视图


有什么想法/解决方法吗?

我用同样的方法使用车把,遇到了同样的问题

我通过存储以下部件解决了此问题:

<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>
    {{#lines}}
      <li>{{name}}</li>
    {{/lines}}
  </ul>
</script>

    {{#行}
  • {{name}}
  • {{/行}
在一个单独的静态文件中,然后在页面呈现后通过ajax加载它。这样,我的客户端模板就不会被Express错误地呈现


如果有一种方法可以添加一个标签,让Express知道忽略这样的块,并将它们留给客户端,那就太好了。

如果把手与胡子真正兼容,那么这应该可以:

首先更改分隔符,将其放在模板顶部(任何模板占位符之前)


更多信息请参见此处的胡须手册底部-

对于车把,uou可以使用反斜杠来避开双大括号,如下所示:

<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>
    \{{#lines}}
      <li>\{{name}}</li>
    \{{/lines}}
  </ul>
</script>

    \{{#行}
  • \{{name}}
  • \{{/行}

您可以尝试在脚本标记前面更改分隔符
{{{=}}
是的,我正在寻找如何做到这一点!无法使用手柄找到它,因此我修改了ICanHaz的副本,以使用更改的分隔符进行客户端模板制作。你能分享一个代码示例来演示如何将这个分隔符更改放入文件中吗?不确定这是否回答了这个问题,因为OP在任何地方都没有提到胡子。。此外,此解决方案对于纯车把解决方案也会引发错误
<% foo %>
{{ bar }}
<script id="firstTemplate" type="text/x-handlebars-template">
  <ul>
    \{{#lines}}
      <li>\{{name}}</li>
    \{{/lines}}
  </ul>
</script>