zoukankan      html  css  js  c++  java
  • Jade之Mixins

    Mixin

    mixin允许我们对某一个块的重复使用,类似于函数。
    用法:首先声明mixin,然后使用(在mixin名字之前加+即可以使用)即可。

    最简单的mixin

    jade:

    //- 声明
    mixin list
      ul
        li foo
        li bar
        li baz
        
    //- 使用
    +list
    +list
    

    html:

    <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:

    mixin pet(name)
      li.pet= name
    ul
      +pet('cat')
      +pet('dog')
      +pet('pig')
    

    html:

    <ul>
      <li class="pet">cat</li>
      <li class="pet">dog</li>
      <li class="pet">pig</li>
    </ul>
    

    mixin块

    mixin使用时,也可以包含一个块。通过判断,可以使内容不同。

    jade:

    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:

    <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>
    
  • 相关阅读:
    作为一名程序员这些代码托管工具你都知道吗?
    QA小课堂:一个网站或者APP开发要多少钱
    成为优秀程序员必备的七点
    成为一个优秀程序员的11条小贴士
    如何成为优秀的程序员?
    互联网自由工作者必须要知道的七点
    为什么程序员会是特立独行的存在?
    互联网时代程序员如何避免知识半衰期?
    万众创新:你是一个优秀的程序员吗?
    如何提高程序员10倍的生产力
  • 原文地址:https://www.cnblogs.com/wsy06/p/4986218.html
Copyright © 2011-2022 走看看