背景

Hugoのテンプレートの中でコメントを記述したかったので調べました。

何が問題なのか?

Hugo のテンプレートで、 <body>...</body> の中で HTML のコメント<!-- a comment -->を記述して、 HTML を生成すると、このコメントは出力されることはない。 しかし、、次のようにテンプレートを作成して、 その中でHTML を生成すると、このコメントが文字列として出力される。

<title>
  {{ block "title" }}
    <!-- a comment -->
    my title
  {{ end }}
</title>

出力された HTML は半分エスケープされて、 &lt;!-- a comment --> のようになる。 これをブラウザーで開くと、タイトルバーには “<!– a comment –> my title” のように表示される。これを解消したい。

HTMLの仕様を確認する

Hugo で生成した HTMLでなく、普通に HTML のファイルにコメントを記述した場合はどうなるのか確認した。 次のファイルを作成した。

<!DOCTYPE html>
<html>
  <head>
    <title>
      <!-- a comment -->
      my title
    </title>
  </head>
  <body>
    <h1>comment</h1>
  </body>
</html>

ブラウザーでこのファイルを開く。 すると、タイトルバーに “<!– a comment –> my title” のように表示される。 <title>...</title> の中では

<!-- ... -->

のコメントはコメントとして使えないことがわかる。

Hugo のテンプレートのコメントアウト

HTML として出力される前に、コメントアウトされるようにする。 テンプレートのコメントは下記のように記載する。

{{/* comments here */}}

すると、 HTML を生成した際に、 {{/* ... */}} が出力されることがなくなる。 ブラウザーのタイトルバーにも “my title” とだけ、表示される。

これはGoのテンプレートと同じである。