渲染原始html以响应Express

时间:2015-09-16 06:42:45

标签: node.js express

我想知道如何使用Express在响应中呈现原始HTML字符串。

我的问题与其他问题不同,因为我不是要渲染原始HTML模板;相反,我只想渲染一个原始的HTML字符串。

以下是我在路线档案中尝试的内容。

router.get('/myRoute', function (req, res, next) {
  var someHTML = "<a href=\"foo\">bar</a>"
  res.end(someHTML);
});

但是当我将浏览器指向此路径时,我看到的是超链接,而不是原始的HTML字符串。我试图通过执行以下操作将内容类型设置为文本:res.setHeader('Content-Type', 'text');但无效。

有什么建议吗?

4 个答案:

答案 0 :(得分:12)

来到这里的其他人;这对我来说效果最好:

res.set('Content-Type', 'text/html');
res.send(new Buffer('<h2>Test String</h2>'));

编辑:

如果您的问题是逃避某些字符,请尝试使用模板文字:Template literals

答案 1 :(得分:0)

只需在其周围添加标签

someHTML = "<plaintext>" + someHTML + "</plaintext>";

请注意,明文被认为是过时的,这意味着浏览器供应商没有义务实施它们。但是,它仍适用于主流浏览器。

另一种方法是

someHTML = someHTML.replace(/</g, '&lt;').replace(/>/g, '&gt;');

答案 2 :(得分:0)

执行此操作的最佳方法是,假设您使用回调样式,声明var output =&#34;&#34; ....然后将输出var所需的内容附加到+ = ....如果它是一个大字符串,则使用模板文字(new line doesn't matter ${variables in here})...然后res.writeHead(200,{Content-Type:text / html); res.end(输出)

答案 3 :(得分:0)

在发送前对HTML进行编码。有人为此做了一个要点:https://gist.github.com/mikedeboer/1aa7cd2bbcb8e0abc16a