Jade之Mixins

Mixin

mixin容许咱们对某一个块的重复使用,相似于函数。
用法:首先声明mixin,而后使用(在mixin名字以前加+便可以使用)便可。html

最简单的mixin

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

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块

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>

mixin attributes

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>
相关文章
相关标签/搜索