我在节点应用中使用车把,但遇到了麻烦。
这是模板 index.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>
<B>
<B>
如何避免这种情况?
从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 <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>
但是从我的角度来看,它可能无法实现将模板与js文件分开的目的。
如果使用预编译,请使用noEscape选项:
handlebars.precompile(content, {noEscape: true})