Jade模板引擎學習(二)語法:代碼、變量、循環、過濾器及mixin


Jade語法

一、代碼

不會被緩沖代碼

ul
  - for(var i=0; i<3; i++)
    li Jade Engine

會轉換為:

<ul>
  <li>Jade Engine</li>
  <li>Jade Engine</li>
  <li>Jade Engine</li>
</ul>

被緩沖代碼

  p= 'Hello Jade'

會轉換為:

<p>Hello Jade</p>

注意: =默認會轉義內容

p= 'Welcome to wandoujia fe, we want <b>you</b>'

會轉換為:

<p>Welcome to wandoujia fe, we want &lt;b&gt;you&lt;/b&gt;</p>

如果不想被轉義的,在=前面添加!

p!= 'Welcome to wandoujia fe, we want <b>you</b>'

會轉換為:

<p>Welcome to wandoujia fe, we want <b>you</b></p>

 

二、使用變量

- var name = 'Jade'
p my name is #{name}

會轉換為:

<p>my name is Jade</p>

如果要輸出 #{},那就得使用/來轉義

- var name = 'yaochun'
p my name is \#{name}

會轉換為:

<p>my name is #{name}</p>

變量中的特殊字符會被轉義,如:

- var name = '<script></script>'
| #{name}

會轉換為:

&lt;script&gt;&lt;/script&gt;

如要得到不轉義的,用!替換#來調用

- var name = '<script></script>'
| !{name}

會轉換為:

<script></script>

| 其實就是管道,一般也可以定義一段文本

 

三、循環

語法結構:

each VAL[,KEY] in OBJ
  • VAL是值
  • KEY是鍵,可選
  • OBJ是對象,array or object

 

數組實例

- var jobs = ["fe", "wandoujia", "beijing", "We want you"]
  each job in jobs
      li= job

會轉換為:

<li>fe</li>
<li>wandoujia</li>
<li>beijing</li>
<li>We want you</li>

 

對象實例

- var jobs = {"catagory" : "fe", "company" : "wandoujia", "local" : "beijing"}
each val,key in jobs
    li #{key} : #{val}

會轉換為:

<li>catagory : fe</li>
<li>company : wandoujia</li>
<li>local : beijing</li>

 

四、Case

case主要的作用和js里面的switch一樣

方式一 本文推薦的方式

- var apples = 1
  case apples
    when 0
        p you have no apples
    when 1
        p you have an apple
    default
        p you have #{apples} apples

會轉換為:

<p>you have an apple</p>

方式二

- var apples = 1
  case apples
    when 0: p you have no apples
    when 1: p you have an apple
    default: p you have #{apples} apples

方式三

有些時候,確實有需求合並一些when的情況

- var apples = 1
  case apples
    when 0
    when 1
       p you have few apples
    default
       p you have #{apples} apples

當apples這個值為0或者1的時候會轉換為:

<p>you have few apples</p>

 

五、過濾器

支持markdown

注意:必須是已經安裝 markdown-js 或者 node-discount

:markdown
    我們來自豌豆莢前端,歡迎有志之士加盟,簡歷發送至zhangyaochun@wandoujia.com

會轉換為:

<p>我們來自豌豆莢前端,歡迎有志之士加盟,簡歷發送至zhangyaochun@wandoujia.com</p>

六、Mixins

無參數的mixin

mixin join
  ul
    li 我們需要一幫人
    li 喜歡前端
    li 了解前端
    li 願意在前端不斷學習奮斗的
    li 你是嗎?
    li 快來加入我們把

+join()

會轉換為:

<ul>
    <li>我們需要一幫人</li>
    <li>喜歡前端</li>
    <li>了解前端</li>
    <li>願意在前端不斷學習奮斗的</li>
    <li>你是嗎?</li>
    <li>快來加入我們把</li>
</ul>

有參數的mixin

mixin join(company)
  ul
    li 我們 #{company} 需要一幫人
    li 喜歡前端
    li 了解前端
    li 願意在前端不斷學習奮斗的
    li 你是嗎?
    li 快來加入我們 #{company} 把

+join('wandoujia')

會轉換為:

<ul>
    <li>我們 wandoujia 需要一幫人</li>
    <li>喜歡前端</li>
    <li>了解前端</li>
    <li>願意在前端不斷學習奮斗的</li>
    <li>你是嗎?</li>
    <li>快來加入我們 wandoujia 把</li>
</ul>

minxin中支持block

mixin join(company)
  ul
    li 我們需要一幫人
    li 喜歡前端
    li 了解前端
    li 願意在前端不斷學習奮斗的    
    if block
      block
    else  
      li 你是嗎?
      li 快來加入我們把

+join('wandoujia')
  li 我們這有神馬?
  li 我們這個有一幫能折騰的老師阿姨
  li 我們這有美麗的阿姨
  li 我們每周都有技術交流
  li 我們這可以用很多開源的新技術

會轉換為:

<ul>
    <li>我們需要一幫人</li>
    <li>喜歡前端</li>
    <li>了解前端</li>
    <li>願意在前端不斷學習奮斗的</li>
    <li>我們這有神馬?</li>
    <li>我們這個有一幫能折騰的老師阿姨</li>
    <li>我們這有美麗的阿姨</li>
    <li>我們每周都有技術交流</li>
    <li>我們這可以用很多開源的新技術</li>
</ul>

minxin中還支持attributes

mixin link(href, name)
  a(class!=attributes.class, title!=attributes.title, href=href)= name

+link('http://wandoujia.com/join', '豌豆莢前端招聘')(class="btn", title="招聘啦,小伙伴快來點")  

會轉換為:

<a title="招聘啦,小伙伴快來點" href="http://wandoujia.com/join" class="btn">豌豆莢前端招聘</a>

七、包含

有點類似freemaker,通過include來載入一些jade模板

 

轉自:http://www.w3cplus.com/html/jade.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM