
Pug 默认支持直接在文本中使用括号 ()、大于号 >、& 等普通符号,无需转义;仅当特殊字符构成标签语法(如 )时才需处理,否则强行使用 !{} 或 #[...] 反而引发解析错误。
如何在 pug 模板中正确处理括号、大于号与符号等特殊字符
在 Pug(原 Jade)模板引擎中,一个常见误区是认为所有特殊字符(如 (、)、>、&)都需要显式转义才能安全输出。实际上,Pug 对纯文本内容极为宽容:只要这些字符不参与构成标签、属性或插值语法,就可以直接书写,无需任何转义。
例如,若你希望最终生成如下 HTML:
<p>(Edit > Preferences > Media & Lorem Ipsum)</p>
✅ 推荐写法(简洁、语义清晰、零风险):
p (Edit > Preferences > Media & Lorem Ipsum)
或使用点语法(.)进入块级文本模式:
p. (Edit > Preferences > Media & Lorem Ipsum)
这两种方式均能被 Pug 正确解析为纯文本,自动对 & 进行 HTML 实体编码(即输出 &),确保浏览器安全渲染。
⚠️ 注意事项:
-
!{...}是 非转义插值语法,仅用于注入已信任的 HTML 字符串(如!{'<strong>bold</strong>'}),不可用于普通符号转义。!{(}是非法语法,会导致编译报错。 -
#[...]是内联标签嵌套语法(如p #[strong Hello] world),不能用于包裹孤立符号,#[(]同样无效。 - 若遇到
(等字符报错,通常意味着 Pug 版本过旧、配置异常(如启用了严格解析模式),或该字符意外触发了语法结构(例如紧邻=被误读为属性赋值)。此时应检查上下文与错误日志,而非盲目尝试转义。
? 总结:在 Pug 中,优先直写文本;只在输出动态 HTML 或嵌入标签时才启用 !{} 或 #[...]。保持简单,就是最健壮的写法。










