插值法
Pug 提供了满足你各种不同插值需求的运算符。
字符串插值,转义
考虑以下模板局部变量的放置:title
、author
和 theGreat
。
title
遵循评估本地模板的基本模式,但 #{
和 }
之间的代码被评估、转义,并将结果缓冲到正在渲染的模板的输出中。
这可以是任何有效的 Javascript 表达式,因此你可以做任何感觉好的事情。
Pug 足够聪明,可以找出表达式的结束位置,因此你甚至可以包含 }
而无需转义。
如果你需要逐字包含 #{
,你可以转义它,或使用插值。(太元了!)
字符串插值,未转义
你不必谨慎行事。你也可以将未转义的值缓冲到模板中。
注意
请记住,如果未转义的内容是来自用户的新鲜内容,则将未转义的内容缓冲到模板中可能会带来很大的风险。永远不要相信用户输入!
标签插值
插值不仅适用于 JavaScript 值,也适用于 Pug。只需使用标签插值语法,如下所示:
你可以通过编写与你的 Pug 内联的 HTML 标签来完成同样的事情…但是,编写 Pug 的意义何在?将内联 Pug 标签声明封装在 #[
和 ]
中,它将被评估并缓冲到其包含标签的内容中。
空白控制
标签插值语法对于内联标签特别有用,其中标签前后的空格很重要。
然而,默认情况下,Pug 会删除标签前后的所有空格。查看以下示例:
有关此主题的更多讨论,请参阅 纯文本 页面中的空白部分。
属性插值
注意
以前版本的 Pug/Jade 支持插值语法,例如:
a(href="/#{url}") Link
不再支持此语法。替代方案如下。(有关 Pug v2 和以前版本之间其他不兼容性的更多信息,请查看我们的[迁移指南]。)
你可以使用以下一些替代方法在属性中包含变量:
-
只需在 JavaScript 中编写属性:
-
如果你的 JavaScript 运行时支持 ES2015 [模板字符串](包括 Node.js/io.js 1.0.0 及更高版本),你还可以使用其语法来简化你的属性: