Jade 转换 & to &当使用 JavaScript 时



我刚刚开始使用Harp 0.30.1,它作为预处理器安装了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>

我对翡翠和混音有足够的了解,可以制作这个......

- 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)
-}

。这给了我想要的。

但是,如果我尝试在替换函数中使用"&nbsp;"而不是" ",我会看到 HTML 输出使用&amp;而不是&字符。

<li>
<a href="This-is-an-MD-file.html">
This&amp;nbsp;is&amp;nbsp;and&amp;nbsp;MD&amp;nbsp;file
</a>
</li>

这不是我想要的。

这只发生在 JavaScript 函数中。如果我在普通的翡翠标记部分使用&nbsp;,就像这样......

p non&nbsp;breaking&nbsp;space

。HTML 完全按预期输出。

为什么会这样?有没有办法转义 JavaScript 部分中的&字符,以便它不会转换为 HTML 实体?

您可以使用未转义的字符串插值语法(!{variable}(代替常规的字符串插值语法(#{variable}(来呈现这些不间断的空格。

在您的情况下:

a(href= fileName) !{trim(fileName)}

但请记住哈巴狗文档中的警告:

谨慎

请记住,如果内容来自用户,则未转义的内容缓冲到模板中可能会带来巨大的风险。永远不要相信用户输入!

最新更新