当使用 JavaScript 时,Jade 将 & 转换为 &
Jade converts & to & when JavaScript is used
我刚刚开始使用 Harp 0.30.1,它作为预处理器安装在 Jade 中。所以我也刚开始使用 Jade。
我有一个文件夹,其中包含一组文件名类似于 This-is-an-MD-file.md
的文件。使用此文件夹中的 index.jade
文件,我想生成以下 HTML 输出:
<ul>
<li><a href="This-is-an-MD-file.html">This is an MD file</a></li>
</ul>
我对 Jade 和 mixins 有足够的了解来制作这个...
- var trim = function(string) {
- var index = string.lastIndexOf(".")
- return string.substring(0, index).replace(/-/g, " ")
- }
mixin link(fileName)
li
a(href='#{fileName}') #{trim(fileName)}
ul
for file in public._contents
- if (file !== "index.html"){
+link(file)
-}
...这给了我想要的东西。
但是,如果我尝试在替换函数中使用 " "
而不是 " "
,我会看到 HTML 输出使用 &
而不是 &
字符.
<li>
<a href="This-is-an-MD-file.html">
This&nbsp;is&nbsp;and&nbsp;MD&nbsp;file
</a>
</li>
这不是我想要的。
这只发生在 JavaScript 函数中。如果我在纯 Jade 标记部分使用
,就像这样...
p non breaking space
... HTML 的输出完全符合预期。
为什么会这样?有没有办法转义 JavaScript 部分中的 &
字符,使其不被转换为 HTML 实体?
您可以使用 unescaped string interpolation 语法 (!{variable}
) 而不是常规的字符串插值语法 (#{variable}
) 来渲染那些不间断的空格。
你的情况:
a(href= fileName) !{trim(fileName)}
但请记住来自 Pug documentation 的警告:
Caution
Keep in mind that buffering unescaped content into your templates can be mighty risky if that content comes fresh from your users. Never trust user input!
我刚刚开始使用 Harp 0.30.1,它作为预处理器安装在 Jade 中。所以我也刚开始使用 Jade。
我有一个文件夹,其中包含一组文件名类似于 This-is-an-MD-file.md
的文件。使用此文件夹中的 index.jade
文件,我想生成以下 HTML 输出:
<ul>
<li><a href="This-is-an-MD-file.html">This is an MD file</a></li>
</ul>
我对 Jade 和 mixins 有足够的了解来制作这个...
- var trim = function(string) {
- var index = string.lastIndexOf(".")
- return string.substring(0, index).replace(/-/g, " ")
- }
mixin link(fileName)
li
a(href='#{fileName}') #{trim(fileName)}
ul
for file in public._contents
- if (file !== "index.html"){
+link(file)
-}
...这给了我想要的东西。
但是,如果我尝试在替换函数中使用 " "
而不是 " "
,我会看到 HTML 输出使用 &
而不是 &
字符.
<li>
<a href="This-is-an-MD-file.html">
This&nbsp;is&nbsp;and&nbsp;MD&nbsp;file
</a>
</li>
这不是我想要的。
这只发生在 JavaScript 函数中。如果我在纯 Jade 标记部分使用
,就像这样...
p non breaking space
... HTML 的输出完全符合预期。
为什么会这样?有没有办法转义 JavaScript 部分中的 &
字符,使其不被转换为 HTML 实体?
您可以使用 unescaped string interpolation 语法 (!{variable}
) 而不是常规的字符串插值语法 (#{variable}
) 来渲染那些不间断的空格。
你的情况:
a(href= fileName) !{trim(fileName)}
但请记住来自 Pug documentation 的警告:
Caution
Keep in mind that buffering unescaped content into your templates can be mighty risky if that content comes fresh from your users. Never trust user input!