Go言語でのWebアプリ開発学習その8~標準ライブラリのHTMLテンプレートのアクション:コメント

前回 ( https://note.com/yasmizohawks/n/n41c0bb1954e9 ) に引き続き
Go言語でのWebアプリ開発についていろいろ見てみます。
今回は標準ライブラリのHTMLテンプレートのアクションのコメント機能
について見てみます。


■ アクションとは

前回までに紹介したHTMLテンプレートファイルには
以下のような記載がありました。

  • <p>Hello, {{.}}</p>

  • <p>名前:{{.userName}}</p>

  • {{ range $zipCode := .}}

上記の {{ と }} で囲まれた部分をアクションと呼びます。
アクション部分以外はそのまま表示、
アクション部分はプログラムの処理結果に応じて動的に生成
する感じですね。

アクション部分では、
・データの表示
・条件分岐や繰り返しなどの処理制御
を行います。

Java の JSP や Thymeleaf などでも同じようなことができますね。
Go のアクションでできることを見ていきます。

■ コメント

{{/**/}} で囲まれた部分はコメントとなります。
以下にサンプルを示します。

  • HTMLテンプレートにデータを埋め込むコード

package main

import (
	"html/template"
	"os"
)

func main() {
	name := "Mizoguchi"
	t := template.Must(template.ParseFiles("./htmlTempSample07.html"))
	t.Execute(os.Stdout, name)
}

文字列「Mizoguchi」をテンプレートに渡すだけのものです。
ブラウザでいちいち確認するのも面倒なので
HTMLの出力先を「os.Stdout」とし、
コマンドプロンプトの標準出力で確認できるようにしてます。

  • HTMLテンプレートファイル htmlTempSample07.html

<!DOCTYPE html>
<html>
  <head>
    <title>sample</title>
  </head>
  <body>
    {{/* コメントなので、出力されないよ */}}
    
    {{/*
      複数行もまとめてコメントできるってよ
      複数行もまとめてコメントできるってよ
      複数行もまとめてコメントできるってよ
      複数行もまとめてコメントできるってよ
      複数行もまとめてコメントできるってよ
    */}}

    {{ "コメントじゃないので、出力されるよ" }}

    {{/*
      <p>Hello, {{.}}</p>
    */}}
  </body>
</html>

以下の部分では1行のみコメントアウトしています。

{{/* コメントなので、出力されないよ */}}

以下のように、
開始行に {{/*
終了行に */}}
を記載し、その間に複数の行にまたがったコメントを入れることもできます。

{{/*
  複数行もまとめてコメントできるってよ
  複数行もまとめてコメントできるってよ
  複数行もまとめてコメントできるってよ
  複数行もまとめてコメントできるってよ
  複数行もまとめてコメントできるってよ
*/}}

以下の行では /**/ が無いと表示されることの確認のために
{{ "【固定文字列】" }}
という形にして【固定文字列】がそのまま表示されるようにしてます。
※ 【固定文字列】はダブルクォーテーションで囲まないとエラーになります
  ⇒ 固定文字列なのか関数名なのかの判断がつかないため

{{ "コメントじゃないので、出力されるよ" }}

コメント内に任意のアクションがあっても
コメント扱いになるかの確認を以下で行ってます。

{{/*
  <p>Hello, {{.}}</p>
*/}}

上記 {{.}} 部分は
プログラムから渡された文字列が入るアクションとなりますが
それを {{/* ~ */}} で囲ってコメントとしています。

実行してみます。

>go run htmlTemp08.go
<!DOCTYPE html>
<html>
  <head>
    <title>sample</title>
  </head>
  <body>
    
    
    

    コメントじゃないので、出力されるよ

    
  </body>
</html>

{{/* ~ */}} で囲まれた部分は表示されてないですね。

次回も引き続き標準ライブラリのHTMLテンプレートの
アクションについて見ていきます。

#プログラミング
#IT
#プログラミング言語
#Go言語
#GO
#Golang
#Webアプリケーション開発

いいなと思ったら応援しよう!