nodejs,jade escape markup

him*_*mar 11 javascript node.js pug

我有一个使用默认Jade视图引擎的Express应用程序.当我尝试在<pre>元素中按原样呈现HTML时,它将呈现为实际的DOM元素而不是文字字符.

h1 Code Sample
pre
  code
    <div>some text</div>
Run Code Online (Sandbox Code Playgroud)

输出:

<h1>Code Sample</h1>
<pre>
  <code>
    <div>some text</div>
  </code>
</pre>
Run Code Online (Sandbox Code Playgroud)

如何转义HTML以使其呈现如下?

<h1>Code Sample</h1>
<pre>
  <code>
    &lt;div&gt;some text&lt;/div&gt;
  </code>
</pre>
Run Code Online (Sandbox Code Playgroud)

Dan*_*lig 23

翡翠使用爆炸强迫未转换的输出.因此,使用以下构造将常规输出转换为非转义输出:!=
如果您的内容位于div标记内,则可以执行以下操作:

div!= content
Run Code Online (Sandbox Code Playgroud)

  • 该帖子询问如何**逃脱**html,而不是unescape.请参阅下面的答案. (3认同)

kum*_*rsh 19

另外,这是另一个需要考虑的用例:

如果您使用#{...}它来推断HTML内容,它仍然会给出错误的输出.对于该用例,您需要!{...}替代方案.

所以,

div= varname
Run Code Online (Sandbox Code Playgroud)

div!= varname
Run Code Online (Sandbox Code Playgroud)

div #{varname} is extrapolated badly
Run Code Online (Sandbox Code Playgroud)

div !{varname} is extrapolated perfectly
Run Code Online (Sandbox Code Playgroud)


KAR*_*ván 8

实际上OP要求逃避,而不是unescaping.我今天遇到了什么.

假设您有内容varName变量<b>FooBar</b>.

然后此模板将使用转义值:

#foobar= varName
Run Code Online (Sandbox Code Playgroud)

所以它变成:

<div id="foobar">&lt;b&gt;FooBar&lt;/b&gt;</div>
Run Code Online (Sandbox Code Playgroud)

如果你使用爆炸操作员:

#foobar!= varName
Run Code Online (Sandbox Code Playgroud)

玉不会逃脱它,所以它变成:

<div id="foobar"><b>FooBar</b></div>
Run Code Online (Sandbox Code Playgroud)