14

ノードアプリケーションでハンドルバーを使用していますが、問題があります。

これがテンプレートですindex.html

{{CONTENT}}

これがコードです

var fs = require("fs");
var handlebars = require("handlebars");

var data = {
    CONTENT: "<b>Hello world!</b>"
};

var templateFile = fs.readFileSync('./index.html', 'utf8');
var template = handlebars.compile( templateFile );
var html = template(data);

問題は、タグ<B>がエスケープされていることです&lt;B&gt;

どうすればこれを回避できますか?

4

2 に答える 2

38

handlebarsjs.comから:

{{expression}} によって返されるハンドルバーの HTML エスケープ値。ハンドルバーに値をエスケープさせたくない場合は、「トリプルスタッシュ」を使用してください。

<div class="entry">
  <h1>{{title}}</h1>
  <div class="body">
    {{{body}}}
  </div>
</div>

このコンテキストで:

{
  title: "All about <p> Tags",
  body: "<p>This is a post about &lt;p&gt; tags</p>"
}

結果:

<div class="entry">
  <h1>All About &lt;p&gt; Tags</h1>
  <div class="body">
    <p>This is a post about &lt;p&gt; tags</p>
  </div>
</div>

ただし、私の観点からは、jsファイルよりもテンプレートを分離するという目的に反する可能性があります。

プリコンパイルを使用する場合は、noEscape オプションを使用します。

handlebars.precompile(content, {noEscape: true})
于 2013-04-04T09:50:31.643 に答える
26

テンプレートで「トリプルスタッシュ」を使用したいでしょう:

{{{CONTENT}}}
于 2013-04-04T09:50:17.173 に答える