翡翠酒店;至&;amp;使用JavaScript时
我刚刚开始使用Jade附带的作为预处理器安装的。所以我也从Jade开始 我有一个文件夹,其中包含一组文件名为翡翠酒店;至&;amp;使用JavaScript时,javascript,pug,html-entities,harp,Javascript,Pug,Html Entities,Harp,我刚刚开始使用Jade附带的作为预处理器安装的。所以我也从Jade开始 我有一个文件夹,其中包含一组文件名为的文件。这是一个MD文件。MD。使用此文件夹中的index.jade文件,我希望生成以下HTML输出: 我对Jade和mixins有足够的了解来制作这个 - var trim = function(string) { - var index = string.lastIndexOf(".") - return string.substring(0, index).repla
的文件。这是一个MD文件。MD
。使用此文件夹中的index.jade
文件,我希望生成以下HTML输出:
我对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)
-}
。。。这就是我想要的
但是,如果我尝试在replace函数中使用“
而不是”
,我会看到HTML输出使用&
而不是&
字符
这不是我想要的
这只发生在JavaScript函数中。如果我在纯翡翠标记部分使用
,如下所示
p non breaking space
。。。HTML的输出与预期完全一致
为什么会这样?有没有一种方法可以转义JavaScript部分中的&
字符,使其不转换为HTML实体?您可以使用语法(!{variable}
)而不是常规的字符串插值语法({variable}
)来获得要渲染的非中断空格
就你而言:
a(href= fileName) !{trim(fileName)}
但请记住以下警告:
小心
请记住,如果未转载的内容来自用户,则将其缓冲到模板中可能非常危险。永远不要相信用户的输入
这叫做消毒,如果你的内容中会有:
…
?我已经看到了但是我没有试着把它放在那里。在本例中,输入的是我的开发机器上的文件名,因此我是唯一不应该信任的用户。