Pugのテンプレート内でfor文やeach文、if文、switch文などを使ってみます。
for文
まずはfor文を簡単に使ってみます。
Pug
- for (var x = 0; x < 3; x++) li item#{x}
コンパイルすると以下のように出力されます。
HTML
<li>item0</li> <li>item1</li> <li>item2</li>
ページ毎のタイトルとディレクトリを配列で用意して、for文でナビゲーションを出力させてみます。
Pug
- var pages = [ { pageName: 'About', pageDir: 'about' }, { pageName: 'Product', pageDir: 'product' }, { pageName: 'Contact', pageDir: 'contact' } ] ul.gnav - for (var x = 0; x < pages.length; x++) li: a(href='/'+pages[x]['pageDir']+'/') #{pages[x]['pageName']}
HTML
<ul class="gnav"> <li><a href="/about/">About</a></li> <li><a href="/product/">Product</a></li> <li><a href="/contact/">Contact</a></li> </ul>
each文
each文を使ってみます。
Pug
- var list = ['フォスフォフィライト', 'ダイヤモンド', 'カーボナード', '辰砂'] each item in list li #{item}
HTML
<li>フォスフォフィライト</li> <li>ダイヤモンド</li> <li>カーボナード</li> <li>辰砂</li>
先ほどのナビゲーションのサンプルをeach文で作成してみます。
Pug
- var pages = [ { pageName: 'About', pageDir: 'about' }, { pageName: 'Product', pageDir: 'product' }, { pageName: 'Contact', pageDir: 'contact' } ] ul.gnav each page in pages li: a(href='/'+page['pageDir']+'/') #{page['pageName']}
HTML
<ul class="gnav"> <li><a href="/about/">About</a></li> <li><a href="/product/">Product</a></li> <li><a href="/contact/">Contact</a></li> </ul>
if文
if文を使ってみます。
Pug
- var name = '辰砂' if name=='フォスフォフィライト' p 硬度三半です。 else if name=='辰砂' p 硬度二です。 else p わかりません。 unless name=='フォスフォフィライト' p フォスではありません。 else p フォスです。
「unless 条件」は「if !条件」と同じです。
HTML
<p>硬度二です。</p> <p>フォスではありません。</p>
先ほどのナビゲーションのサンプルで、現在地にclassを付けるようにしてみます。
Pug
- var pages = [ { pageName: 'About', pageDir: 'about' }, { pageName: 'Product', pageDir: 'product' }, { pageName: 'Contact', pageDir: 'contact' } ] - var thisPageDir = 'product' ul.gnav - for (var x = 0; x < pages.length; x++) if pages[x]['pageDir']==thisPageDir li.is-current: a(href='/'+pages[x]['pageDir']+'/') #{pages[x]['pageName']} else li: a(href='/'+pages[x]['pageDir']+'/') #{pages[x]['pageName']}
HTML
<ul class="gnav"> <li><a href="/about/">About</a></li> <li class="is-current"><a href="/product/">Product</a></li> <li><a href="/contact/">Contact</a></li> </ul>
switch文
JavaScriptのSwitch文にあたるcase文を使ってみます。
Pug
- var name = 'フォス' case name when '金剛' - break when 'フォス' p 硬度三半です。 when 'シンシャ' p 硬度二です。 when 'ダイヤモンド' when 'ボルツ' p 硬度十です。 default p わかりません。
コンパイルすると以下のように出力されます。
HTML
<p>硬度三半です。</p>
nameに「ダイヤモンド」または「ボルツ」を指定すると、以下のように出力されます。
HTML
<p>硬度十です。</p>
出力内容を省略することで、次の条件と同じ出力になります。
nameに「金剛」を指定すると、何も出力されません。
特に何も出力したくない場合はbreakを追加してください。
【参考サイト】
コメントが承認されるまで時間がかかります。