テンプレートの記述方法
【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト
【html/templateパッケージ】
Goの標準パッケージの一つであるhtml/templateは、PHPやJavaなどの他言語にもみられるテンプレートエンジンのような機能を提供している。
html/templateパッケージが実装るテンプレートは、コードインジェクション対策が施された安全なHTMLを生成する
【テンプレートの記述方法】
それではまず、HTMLテンプレートの記述方法をみてみましょう。
templatesディレクトリを作成し、その中にsample.gtplというファイルを作成する。
拡張子は任意ですが、ここではgoのテンプレートファイルであることを表すgtplという拡張子にした。
【テンプレート出力に使用するメソッド】
テンプレートを出力するためのGoプログラムを作る。
そのつログラムで、html/templateパッケージの3つのメソッドを利用する。
1.作成済のテンプレートを読み込むために、ParseFilesメソッド
定義
func ParseFiles([テンプレートファイルのパス] string) (*Template, error)
2.テンプレートを格納するオブジェクト変数の初期化するMustメソッド
定義
func Must([テンプレート] *Template) *Template
3.流入するデータを指定してテンプレートを描画するExecuteTemplateメソッド
定義
func (t *Template) ExecuteTemplate([http.ResponseWriter] io.Writer, [テンプレート名] string, [流入するデータ] interface{}) error
【テンプレートを表示するプログラム】
templatesディレクトリに「main.go」も作成する。
package main
import (
"fmt"
"html/template"
"net/http"
)
func gtplHandler(w http.ResponseWriter, r *http.Request) {
// テンプレートをパースする
tpl := template.Must(template.ParseFiles("sample.gtpl"))
// テンプレートに出力する値をマップにセット
values := map[string]string{
"account": "user-0001",
"name": "山田太郎",
"passwd": "sample-pass",
}
// マップを展開してテンプレートを出力する
if err := tpl.ExecuteTemplate(w, "sample.gtpl", values); err != nil {
fmt.Println(err)
}
}
func main() {
// ルートへのリクエストを"gtplHandler"関数で処理する
http.HandleFunc("/", gtplHandler)
// localhost:8080でサーバー処理開始
http.ListenAndServe(":8080", nil)
}
実行
PS D:\GO言語\サンプルプログラム\templates> go run main.go
・ブラウザでhttp://localhost:8080/にアクセスする
※コメント投稿者のブログIDはブログ作成者のみに通知されます