翡翠酒店;至&;amp;使用JavaScript时

翡翠酒店;至&;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

我刚刚开始使用Jade附带的作为预处理器安装的。所以我也从Jade开始

我有一个文件夹,其中包含一组文件名为
的文件。这是一个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)}
    
    但请记住以下警告:

    小心

    请记住,如果未转载的内容来自用户,则将其缓冲到模板中可能非常危险。永远不要相信用户的输入


    这叫做消毒,如果你的内容中会有:
    ?我已经看到了