嵌入 Interpolation
Pug 提供了若干种操作符以满足您不同的嵌入需求。
字符串嵌入,转义
观察下面例子中的局部变量 title
、author
和 theGreat
是如何被嵌入模板的。
title
被简单地求值;但在 #{
和 }
里面的代码也会被求值,转义,并最终嵌入到模板的渲染输出中。
里面可以是任何的正确的 JavaScript 表达式,您可以自由发挥。
Pug 足够聪明来分辨到底哪里才是嵌入表达式的结束,所以您不用担心表达式中有 }
,也不需要额外的转义。
如果您需要表示一个 #{
文本,您可以转义它,也可以用嵌入功能来生成(可以,这很元编程)。
字符串嵌入,不转义
您当然也 并不是必须 要用安全的转义来构造内容。您可以嵌入没有转义的文本进入模板中。
危险
请您务必清醒地意识到,如果直接使用您的用户提供的数据,未进行转义的内容可能会带来安全风险。不要相信用户的输入!
标签嵌入
嵌入功能不仅可以嵌入 JavaScript 表达式的值,也可以嵌入用 Pug 书写的标签。它看起来应该像这样:
您确实可以在 Pug 中嵌入一行原始 HTML 代码来做同样的事情。但问题是,如何只用 Pug 来做这件事情?将 Pug 的标签语句用 #[
和 ]
括起来就可以了。它会被求值并嵌入到它原来位置的内容中。
空格的调整
标签嵌入功能,在需要嵌入的位置上前后的空格非常关键的时候,就变得非常有用了。因为 Pug 默认会去除一个标签前后的所有空格。请观察下面一个例子:
阅读文档“纯文本”页中关于空格控制的章节更深入地探讨本话题。