目录:html
Attributesjson
jade中的属性和html中的属性并无什么太大区别, 值也和js的规则没有什么两样。数组
1. js表达式安全
jade: spa
- var authenticated = true
a(class=authenticated ? 'authed' : 'anon')
html:code
<a class="authed"></a>
2. 多属性换行htm
jade:对象
input( type='checkbox' name='agreement' checked )
html:blog
<input type="checkbox" name="argeement" checked="checked" />
3. 非转义属性(Unescaped Attributes)jade
默认状况下, 全部属性都是转义过的。这样作是为了安全起见,防止XSS攻击。若是须要使用特殊字符,能够使用"!="替代"="。
jade:
div(escaped="<code>") div(unescaped="<code>")
html:
<div escaped="<code>"></div> <div unescaped="<code>"></div>
Boolean Attributes
在jade中, 属性值能够是bool值(true or false), 不设置值则默认是true。
jade:
input(type='checkbox', checked)
input(type='checkbox', checked=true)
input(type='checkbox', checked=false)
input(type='checkbox', checked=true.toString())
html:
<input type="checkbox" checked="checked" /> <input type="checkbox" checked="checked" /> <input type="checkbox" /> <input type="checkbox" checked="true" />
Style Attributes
style属性能够是一个string也能够是一个object。好比json格式的对象形式。
jade:
a(style={color: 'red', background:'green'})
html:
<a style="color:red;background:green"></a>
Class Attributes
class属性能够是一个string也能够是一个定义的class的数组对象。
jade:
- var classes = ['foo', 'bar', 'baz']
a(class=classes)
a.bing(class=classes class=['bing'])
html:
<a class="foo bar baz"></a> <a class="bing foo bar baz bing"></a>
一样能够经过使用条件的形式来实现。
jade:
- var currentUrl = '/about'
a(class={active: currentUrl === '/'} href='/') Home
a(class={active: currentUrl === '/about'} href='/about') About
html:
<a href="/">Home</a> <a href="/about" class="active">About</a>
&Attributes
&attributes能够将其两边的属性对象都加入到元素当中。
jade:
- var attributes = {'data-foo': 'bar'} div#foo(data-bar='foo')&attributes(attributes)
html
<div id="foo" data-bar='foo' data-foo='bar'></div>
注: 在使用&attributes的状况下, 它并无实现自动转义。因此须要经过必定的手段来确保你的页面不会出现XSS漏洞。