【问题标题】:Jade template engine, rendering HTML as textJade 模板引擎,将 HTML 渲染为文本
【发布时间】:2012-02-06 17:01:31
【问题描述】:

我的一个.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>
[...]

如您所见,&lt;a href='/item/1'&gt;buy now!&lt;/a&gt; 并未呈现为 HTML,而是呈现为纯文本。有没有办法将它呈现为 HTML,以便它创建一个链接?

谢谢!

【问题讨论】:

  • 不...如果您在发布之前阅读了整个问题,您会发现我说的部分“正如您所见,&lt;a href='/item/1'&gt;buy now!&lt;/a&gt; 不是呈现为 HTML,而是呈现为纯文本。”

标签: node.js pug


【解决方案1】:
each item in items
  li
   | #{item.name} #{item.inStock}
   a(href="/item/"+item.uniqueId) buy now!

【讨论】:

  • 更好的是,消除了!= 的安全问题。 (编辑错字)
  • 谢谢你们俩。请问除了经验之外,您在哪里找到此信息?我试图查看 Jade 主页,但关于如何处理从 Express 传递的变量的信息很少。也许如果你向我解释这是如何工作的,它会更清楚,因为我仍然不知道。
  • 对于 !=,它在 github 页面的自述文件中:“为安全起见,默认情况下对 = 缓冲的代码进行了转义,但是要输出未转义的返回值,您可以使用 !="。 wtfcoder 的解决方案(如果我可以代表他的话!)来自经验和对模板引擎功能的良好使用。他使用jade的语法来渲染锚点,而不是在被视为javascript代码的字符串中。
  • 它使用带有插值的标签文本支持,然后是嵌套标签。它在github.com/visionmedia/jade 的自述文件中有所列出,但我同意这些示例可能会更好/更清晰,我已经使用 Jade 将近一年了,所以我进行了很多实验。它在渲染方面没有给 Express 提供特殊行为,因为使用 j=require('jade');tmpl=j.compile(templateStr);output=tmpl(templateData) 可以观察到相同的结果
【解决方案2】:

尝试未转义的运算符:

li!= ...

它应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 2018-01-17
    • 2013-07-22
    • 2013-06-08
    • 1970-01-01
    • 2017-12-21
    • 2011-11-02
    • 2016-06-24
    相关资源
    最近更新 更多