在 Pug 中编写多行转义 HTML 的最短方法是什么?

问题描述 投票:0回答:2

我正在尝试在 Pug 中输出一些 HTML 代码列表,但将标签符号转换为 HTML 实体(< to & lt; | > 到 > 等...)。到目前为止,我已经通过使用像这样的字符串插值来完成这个

pre
 code.
  #{'<li><a href="#">Anchor tag text</a></li>'}
  #{'<li><a href="#">Anchor tag text</a></li>'}

另一个例子:

pre
  code.
    #{'<body>'}
      #{'<div class="divclass">'}
        #{'<h1 class="class1 class2 class3" id="id1">Heading</h1>'}
        #{'<p class="class2 class3 class1" id="id2">Para1</p>'}
      #{'</div>'}
    #{'</body>'}

有没有更快或更简单的方法可以达到相同的结果?提前谢谢。

pug
2个回答
1
投票

一种更简单的方法是使用模板文字将标记存储在变量中,然后插入变量:

-
  const markup =
  `<body>
    <div class="divclass">
      <h1 class="class1 class2 class3" id="id1">Heading</h1>
      <p class="class2 class3 class1" id="id2">Para1</p>
    </div>
  </body>`

pre
  code #{markup}

0
投票

@Sean 首先非常感谢您的回答。我发现你的方法有点烦人(更不用说我必须跟踪变量名称,不断进行更改,并且在之前的代码列表之间添加代码列表),所以我最终将代码合并到模板文字中,但是在 mixin 参数中,如下所示:

mixin htmlCode(codeBlock)
  pre.html-icon: code= codeBlock
          
+htmlCode(
`<body>
    <div class="divclass">
      <h1 class="class1 class2 class3" id="id1">Heading</h1>
      <p class="class2 class3 class1" id="id2">Para1</p>
    </div>
</body>`)

我还尝试让 mixin 不带参数,并使用 mixin 块来存储内容,但它需要插值。我找不到该版本的解决方案。


//doesn't work as is. It again needs string interpolation on every line
mixin htmlCode
  pre.html-icon: code: block
          
+htmlCode.
  <body>
    <div class="divclass">
      <h1 class="class1 class2 class3" id="id1">Heading</h1>
      <p class="class2 class3 class1" id="id2">Para1</p>
    </div>
  </body>

© www.soinside.com 2019 - 2024. All rights reserved.