LaravelのBladeテンプレートで、@section~@show使ってる箇所をコメントアウトしたら、Javascriptのsyntax errorが起こった。
原因
まず、問題の箇所のソースは以下の通り。
@section('hogehoge')
hogehoge: function(hoge) {
if (hoge > 0) {
hoge++;
}
}
@show
@section('hogehoge2')
hogehoge2: function() {
:
}
こんな感じで、Blade上にJavascriptの記述箇所がある部分を、
// @section('hogehoge')
// hogehoge: function(hoge) {
// if (hoge > 0) {
// hoge++;
// }
// }
// @show
@section('hogehoge2')
hogehoge2: function() {
:
}
一部コメントアウトすると、出力結果は、
// hogehoge2: function() {
:
}
こんな感じになり、コメントアウトしたくない行にもコメントが反映されてしまう。
@showは//でコメントされない
Bladeテンプレートによるレンダリングでは、//でディレクティブを無効化できないみたい。
なので、Bladeのコメント式である{{– –}}を利用してコメントアウトする必要がある。
基礎を抑えてなかったので、無駄に考えさせられた…もっと勉強しないとなぁ。