JadeからPugになって、移行しようと思って使ってはみたものの、
属性に指定した変数がちゃんと出力されなくて「まだバグが多いのかな」とか勝手に思ってたんですが、解決しました。
もともとJadeではこう書けた
タグの属性の値に変数を使うとき、 #{var}
みたいな書き方しかできないと思い込んでました。
- var charset = "utf-8";
meta(charset="#{charset}")
以下のようにも書けるんですね。(知りませんでした…なんで見落としてたのか)
meta(charset=charset)
出力されるHTMLはいずれも以下のとおり。
<meta charset="utf-8">
Pugで出力した結果
- var charset = "utf-8";
meta(charset="#{charset}")
「拡張子jadeをpugにしてgulp-jadeをgulp-pugに変えれば動くでしょ」と思っていたら
<meta charset="#{charset}">
なんでだぁ!?
原因がわからず「とりあえず、まだJadeでいいや」って思っていたんですが、ちゃんとリファレンスに古い記法だと書いてありました。
※属性の中で使えないだけで、外であれば今までどおり使うことが出来ます。
p #{name}
解決策
とりあえずは以下のような書き方をしておけば、Jadeから問題なく移行できるのではないかと思います。
サンプル1
Jadeでも通用する書き方の繰り返しになってしまうんですが
meta(charset=charset)
<meta charset="utf-8">
サンプル2
- var css = "./assets/css/";
link(rel="stylesheet", href=css+"style.css")
<link rel="stylesheet" href="./assets/css/style.css">
サンプル3: "#{var}"
を `${var}`
にする
#
を $
に変更するのはわかりやすいですが、
シングルクォートやダブルクォートではなくバッククォート(`)を使って書くという点。(ES6記法なんですね)
- var link = 'hoge';
a(href=`before${link}after`)
<a href="beforehogeafter"></a>
#{var}
を使っていなかった人なら問題なくPugに移行できるのかもしれませんが、なかなかうまくいかなくて困っている人がいたら、もしかするとこういうことかもしれません。