属性

标签属性看起来类似于 HTML(可选逗号),但其值只是常规 JavaScript。

(注意:本页面的示例使用管道字符 (|) 进行 空白控制。)

常规 JavaScript 表达式也可以正常工作

多行属性

如果你有很多属性,你也可以将它们分散到多行

如果你的 JavaScript 运行时支持 ES2015 模板字符串(包括 Node.js/io.js 1.0.0 及更高版本),你可以将该语法用于属性。这对于具有非常长值的属性非常有用

带引号的属性

如果你的属性名称包含可能干扰 JavaScript 语法的奇异字符,请使用 ""'' 对其进行引用,或使用逗号分隔不同的属性。此类字符的示例包括 []()(经常在 Angular 2 中使用)。

属性插值

注意

Pug/Jade 的早期版本支持插值语法,例如

a(href="/#{url}") Link

此语法不再受支持。 以下提供了替代方案。(查看我们的 迁移指南 以了解 Pug v2 与早期版本之间的其他不兼容性。)

以下是一些可用于在属性中包含变量的替代方案

  1. 只需用 JavaScript 编写属性

  2. 如果你的 JavaScript 运行时支持 ES2015 模板字符串(包括 Node.js/io.js 1.0.0 及更高版本),你还可以使用其语法来简化你的属性

未转义的属性

默认情况下,所有属性都已转义,即特殊字符被转义序列替换,以防止攻击(例如跨站脚本)。如果你需要使用特殊字符,请使用 != 而不是 =

注意

未转义的缓冲代码可能很危险。 你必须确保对所有用户输入进行清理,以避免 跨站脚本

布尔属性

布尔属性由 Pug 镜像。布尔值(truefalse)被接受。当未指定值时,假定为 true

如果文档类型是 html,Pug 知道不镜像属性,而是使用简洁的样式(所有浏览器都理解)。

样式属性

style 属性可以是一个字符串,就像任何普通属性一样;但它也可以是一个对象,这在通过 JavaScript 生成样式时非常方便。

类属性

class 属性可以是一个字符串,就像任何普通属性一样;但它也可以是一个类名数组,这在通过 JavaScript 生成时非常方便。

它也可以是一个将类名映射到 truefalse 值的对象。这对于应用条件类非常有用

类文字

可以使用 .classname 语法定义类

由于 div 是如此常见的标签选择,因此如果您省略标签名称,它将成为默认值

ID 文字

可以使用 #idname 语法定义 ID

由于 div 是如此常见的标签选择,因此如果您省略标签名称,它将成为默认值

&attributes

发音为“and attributes”,&attributes 语法可用于将对象分解为元素的属性。

上面的示例使用了一个对象字面量。但您也可以使用其值为对象的变量。(另请参阅:Mixin Attributes)。

注意

使用 &attributes 应用的属性不会自动转义。您必须确保对任何用户输入进行清理,以避免 跨站脚本 (XSS)。如果从 mixin 调用中传入 attributes,则会自动完成此操作。