mixin容许咱们对某一个块的重复使用,相似于函数。
用法:首先声明mixin,而后使用(在mixin名字以前加+
便可以使用)便可。html
jade:app
//- 声明 mixin list ul li foo li bar li baz //- 使用 +list +list
html:ide
<ul> <li>foo</li> <li>bar</li> <li>baz</li> </ul> <ul> <li>foo</li> <li>bar</li> <li>baz</li> </ul>
mixin支持传入参数,根据参数来改变块内容。函数
jade:code
mixin pet(name) li.pet= name ul +pet('cat') +pet('dog') +pet('pig')
html:htm
<ul> <li class="pet">cat</li> <li class="pet">dog</li> <li class="pet">pig</li> </ul>
mixin使用时,也能够包含一个块。经过判断,能够使内容不一样。jade
jade:it
mixin article(title) .article .article-wrapper h1= title //- 若是mixin含有块,则为块内容 if block block else p No content provided +article('Hello world') +article('Hello world') p This is my p Amazing article
html:class
<div class="article"> <div class="article-wrapper"> <h1>Hello world</h1> <p>No content provided</p> </div> </div> <div class="article"> <div class="article-wrapper"> <h1>Hello world</h1> <p>This is my</p> <p>Amazing article</p> </div> </div>
jade容许将隐性属性变量传入mixin
。变量
jade:
mixin link(href, name) a(class!=attributes.class, href=href, id!=attributes.id)= name +link('/foo', 'foo')(class="btn" id="qaq")
html:
<a href="/foo" class="btn" id="qaq">foo</a>
在jade代码中,由于class属性和id属性已经逃逸,因此在mixin中须要使用!=
,或者也能够使用&attributes
。
jade的mixin的形参能够为多个,即便未知多少个也能够。
jade:
mixin list(...name) each i in name p my name is #{i} +list('Tom', 'Jack', 'Jim', 'Alice', 'Allen')
html:
<p>my name is Tom</p> <p>my name is Jack</p> <p>my name is Jim</p> <p>my name is Alice</p> <p>my name is Allen</p>