職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

goのテンプレート

2023年08月27日 | GO言語
テンプレートの記述方法


【開発環境】
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/にアクセスする

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« JSONファイル | トップ | 入力フォームと確認画面 »
最新の画像もっと見る

コメントを投稿

GO言語」カテゴリの最新記事