node.js和Handlebars:编译的HTML被转义
我在节点应用程序中使用把手,我有麻烦。
这是模板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>
被转移到<B>
我怎样才能避免这一点?
从handlebarsjs.com :
把手HTML转义由{{expression式}}返回的值。 如果你不想要把手逃离一个值,使用“三重藏匿”。
<div class="entry"> <h1>{{title}}</h1> <div class="body"> {{{body}}} </div> </div>
在此背景下:
{ title: "All about <p> Tags", body: "<p>This is a post about <p> tags</p>" }
结果是:
<div class="entry"> <h1>All About <p> Tags</h1> <div class="body"> <p>This is a post about <p> tags</p> </div> </div>
但是从我的angular度来看,它可能会打败一个模板分离的目的,而不是你的js文件。
如果使用预编译,则使用noEscape选项:
handlebars.precompile(content, {noEscape: true})
你想在你的模板中使用“三重藏匿”:
{{{CONTENT}}}