htmlテンプレートにpug
を選んだ場合、素のscriptを書こうとすると迷います。
今回は、pugでjavascriptを書く方法について記載します。
また、本記事で記述するコードは、以前投稿したコードです。
blog.websandbag.com
期待される出力結果
下記のように記述されれば結果として正しいです。
<html> <head> <script src="script.js"></script> <script> var value = new Value("<?php echo($value)?>") </script> </head> <body> <script> console.log(value.getValue()); </script> <body> </html>
実際のテンプレート
scriptタグ内の処理を書く場合は、処理の前に「|(パイプ)」を置くのが良いと思います。
先頭にパイプを記述することで、先頭にパイプがある続いた行のテキストはタグの内部扱いになります。
またプレーンテキストとインラインタグを共存させられるので、phpタグを挿入する場合にも有効です。
html head script(src="script.js") script | var value = new Value("<?php echo($value)?>") body script | console.log(value.getValue());
1行にする場合
下記のように、1行にすることもできます。
スクリプトの場合は数行に及ぶ場合もありますので、パイプで改行できるようにした方が現実的だと思います。
html head script(src="script.js") script var value = new Value("<?php echo($value)?>") body script console.log(value.getValue());
Tips
タグの属性にPHPタグを挿入する場合
今回はjavascriptが主題なので、Tipsとしてご紹介します。
pugとPHPと組み合わせる時に、おそらく最初に難儀するのは属性にPHPタグを挿入です
誤った指定方法
div(id="<?php echo($idName);?>")
下記のように、<
と>
がエスケープされてしまい、phpタグが崩れてしまいます。
<div id="<?php echo($idName);?>">
正しい指定方法
要素の前に!
と、=(イコール)
の後に半角スペースを入れてあげます。
(pugのエスケープについては次に乗っているのですが、PHPのエスケープ方法は別サイトで見つけました。)
https://pugjs.org/language/interpolation.html
div(id!= "<?php echo($idName);?>")
そうすると、phpタグが出力されます。
<div id="<?php echo($idName);?>">
参考URL
PHPタグの挿入方法については次のページがとても参考になります。