Pugでmixinを使用する方法をメモ。
サンプルコード
greetという名前でmixinを作成してみます。
index.pug
// mixinを定義 mixin greet p 花さん こんにちは // 出力 +greet
以下のように出力することができました。
index.html
<p>花さん こんにちは</p>
別ファイルでmixinを定義して使用することもできます。
mixin/_greet.pug
// mixinを定義 mixin greet p ひなたさん こんにちは
定義したファイルをインクルードすることで使用できます。
index.pug
// mixinファイルの読み込み include mixin/_greet.pug // 出力 +greet
出力すると以下のようになります。
index.html
<p>ひなたさん こんにちは</p>
mixinに引数を設定することもできます。
mixin/_greet.pug
// mixinを定義
mixin greet(name)
p #{name}さん こんにちは
mixinの呼び出し時に引数を設定します。
index.pug
// mixinファイルの読み込み
include mixin/_greet.pug
// 出力
+greet('乃愛')
引数で設定した内容で出力できました。
index.html
<p>乃愛さん こんにちは</p>
引数の初期値も設定できるようです。
mixin/_greet.pug
// mixinを定義
mixin greet(name='みやこ')
p #{name}さん こんにちは
引数を設定した場合と設定していない場合で試してみます。
index.pug
// mixinファイルの読み込み
include mixin/_greet.pug
// 出力
+greet('小依')
+greet
以下のように出力することができました。
index.html
<p>小依さん こんにちは</p> <p>みやこさん こんにちは</p>
Rest引数も使用できます。
index.pug
// mixinを定義
mixin characters(title, ...items)
h1= title
ul
each item in items
li= item
// 出力
+characters('私に天使が舞い降りた!', '星野 みやこ', '白咲 花', '星野 ひなた', '姫坂 乃愛', '種村 小依', '小之森 夏音')
以下のように出力できました。
index.html
<h1>私に天使が舞い降りた!</h1> <ul> <li>星野 みやこ</li> <li>白咲 花</li> <li>星野 ひなた</li> <li>姫坂 乃愛</li> <li>種村 小依</li> <li>小之森 夏音</li> </ul>
Pugのブロックをコンテンツとして扱うこともできます。
index.pug
// mixinを定義
mixin introduce(name)
dl.introduce
dt= name
dd
if block
block
else
p 特にありません。
// 出力
+introduce('夏音')
+introduce('みやこ')
p 9月9日生まれです。
p CV上田麗奈です。
index.html
<dl class="introduce">
<dt>夏音</dt>
<dd>
<p>特にありません。</p>
</dd>
</dl>
<dl class="introduce">
<dt>みやこ</dt>
<dd>
<p>9月9日生まれです。</p>
<p>CV上田麗奈です。</p>
</dd>
</dl>
【参考サイト】
コメントが承認されるまで時間がかかります。