当前位置: 首页 > 面试题库 >

node.js和Handlebars:编译的HTML被转义

劳嘉实
2023-03-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;

如何避免这种情况?


问题答案:

从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})


 类似资料:
  • 概览 AngularJS的HTML编译器能让浏览器识别新的HTML语法。它能让你将行为关联到HTML元素或者属性上,甚至能让你创造具有自定义行为的新元素。AngularJS称这种行为扩展为“指令” HTML在编写静态页面时,有很多声明式的结构来控制格式。比如你要把某个内容居中,你不必告诉浏览器“去找到窗口的中点位置,然后跟内容的中间结合”。你只需要添加一个 align="center" 的属性给需

  • 问题内容: 我正在尝试使用Windows 7 Ultimate x64 安装bycrpt 。这是我的安装日志: 我已经安装了Python <v2.7和.NET Framework SDK 2.0。我还下载了一个名为win7sdkx64.exe的程序包,我认为这是Visual Studio的sdk。我喜欢我的所有依赖项,如下所示: 但我仍然遇到这些错误。我接下来可以尝试什么?完全安装Visual S

  • 问题内容: 当我尝试使用将nodejs应用程序推送到heroku时,我得到了: 这是我的package.json: 里面有很多错误,我不知道为什么会这样。请帮忙。-谢谢 问题答案: 进行此工作的最简单方法是将node_modules添加到.gitignore中。 我通过以下方式解决此问题: 确保将Procfile提交到git中 删除node_modules /文件夹并将其提交到git(git rm

  • 本文向大家介绍怎么防止HTML被转义?相关面试题,主要包含被问及怎么防止HTML被转义?时的应答技巧和注意事项,需要的朋友参考一下 <h1 dangerouslySetInnerHTML={{__html: 'cc © 2015'}}></h1>

  • Handlebars.compile(template, options) 编译一个模版以立即运行。 const template = Handlebars.compile("{{foo}}"); template({}); 支持多种选项以更改模版的执行方式。 data: 设置为 false 以终止 @data 跟踪。 compat: 设置为 true 以允许递归领域查找。 knownHelpe

  • Handlebars.js 是一个 JavaScript 的页面模板库。Handlebars在很大程度上与Mustache的模板兼容。在大多数情况下,可以用Handlebars替换掉Mustache,并继续使用你目前的模板。