【Go】テンプレートを使いこなす
久しぶりプログラミングの記事を。
結構Goの記事書いたなと思っていたのですが、標準パッケージの一つであるtemplateについては触れて来なかったなと。
なので今回はtemplateについて。
HowTo
使い方の流れを書くと下記のような感じになります。
package main import html/template func main() { http.HandleFunc("/home", home) log.Fatal(http.ListenAndServe(":8000", nil)) } func home(w http.ResponseWriter, r *http.Request) { // テンプレートをパース tpl := template.Must(template.ParseFiles("home.tpl")) type Address struct { Address string Tel int } data := Address{Address: "東京都", Tel: 00000} tpl.Execute(w, data) }
HandleFuncでハンドラーの登録をしてあげて、サーバーを起動します。
この辺りは普通にWebサーバー立ち上げるのと同じですね。
その後のhomeでテンプレートの呼び出しを行っています。
- ParseFilesでテンプレートファイル(後述)をパース。
- Mustはエラー処理を簡易化してる関数で、パースエラーが起きるとpanicになります。
- Exexuteで実際にテンプレートの描画を行っています。第2引数にテンプレートに渡すデータを渡しています。
一番シンプルなやり方はこのやり方ですね。
テンプレートファイルの拡張子はtplで、ほぼ素のHTMLで書けば問題ありません。
ただ渡したデータを表示する場合は、
<p>住所:{{.Address}}</p> <p>電話番号:{{.Tel}}</p>
二重括弧で囲む形になります。他のテンプレートエンジンによくある形ですね。
htmlとtext
ちなみにtemplateパッケージは、text/templateとhtml/templateと2種類あるのですが、Web用途ではhtmlの方を使うのがいいです。
エスケープ処理などのWeb必須の関数が含まれているからです。
まとめ
ということでtemplateの基本的な機能を使ってみました。
これからこれを使う事が増えると思うので、どんどん使いこなしていきます。