玉石模板引擎,将HTML呈现为文本

5

我在我的一个.jade文件中有这段代码:

each item in items
  li= item.name + " " + item.inStock + " <a href='/item/"+item.uniqueId+"'>buy now!</a>"

这个的渲染结果是:
Of Mice and Men 1000 <a href='/item/1'>buy now!</a>
[...]

正如您所看到的,<a href='/item/1'>现在购买!</a>没有被渲染为HTML,而是作为纯文本显示。是否有一种方法可以将其渲染为HTML,从而创建一个链接?

谢谢!


2
如果您在发布问题之前阅读了整个问题,您就会发现我说“正如您所看到的<a href='/item/1'>立即购买!</a>并没有呈现为HTML,而是作为纯文本。” - Masiar
2个回答

5
each item in items
  li
   | #{item.name} #{item.inStock}
   a(href="/item/"+item.uniqueId) buy now!

1
更好的是,消除了“!=”的安全问题。 - mna
谢谢你们两个。我可以问一下,除了经验之外,你们在哪里找到这些信息?我试着在Jade的主页上查找,但是关于如何处理从Express传递的变量的信息很少。也许如果你们能解释一下这是如何工作的,那就更清楚了,因为我还不知道。 - Masiar
1
对于“!=”,它在Github页面的自述文件中:“默认情况下,由=缓冲的代码会因安全原因而被转义,但是要输出未转义的返回值,您可以使用!=。” wtfcoder的解决方案(如果我可以代表他说话!)来自经验和模板引擎功能的良好使用。他使用jade的语法呈现锚点,而不是将其作为JavaScript代码字符串处理。 - mna
1
它使用标签文本支持与插值,然后是嵌套标签。它在 https://github.com/visionmedia/jade 的自述文件中有一些列表,但我同意示例可能会更好/更清晰,我已经使用 Jade 已经将近一年了,所以我进行了很多实验。它在渲染方面对 Express 没有特殊的行为,因为可以使用 j=require('jade');tmpl=j.compile(templateStr);output=tmpl(templateData) 观察到相同的结果。 - Mâtt Frëëman

4

尝试使用未转义运算符:

li!= ...

这应该就能解决问题了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接