gpt4 book ai didi

javascript - 当使用 JavaScript 时,Jade 将 & 转换为 &

转载 作者:行者123 更新时间:2023-11-30 13:53:11 25 4
gpt4 key购买 nike

我刚开始使用 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 和 mixin 有足够的了解来产生这个......

- 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&amp;nbsp;is&amp;nbsp;and&amp;nbsp;MD&amp;nbsp;file
</a>
</li>

这不是我想要的。

这只发生在 JavaScript 函数中。如果我在纯 Jade 标记部分使用  ,就像这样...

p non&nbsp;breaking&nbsp;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!

关于javascript - 当使用 JavaScript 时,Jade 将 & 转换为 &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57820158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com