Golang 템플릿 사용 시도
템플릿을 사용하면 프로그램과 디자인을 분리할 수 있습니다.
그럼, 우리 실제로 해 봅시다.
다음과 같은 준비 프로그램 (서버.go) 과 템플릿 (clock.tpl) 입니다.
server.go
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"time"
)
func main() {
// /now にアクセスした際に処理するハンドラーを登録
http.HandleFunc("/now", handleClockTpl)
// サーバーをポート8080で起動
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handleClockTpl(w http.ResponseWriter, r *http.Request) {
// テンプレートをパース
tpl := template.Must(template.ParseFiles("clock.tpl"))
m := map[string]string{
"Date": time.Now().Format("2006-01-02"),
"Time": time.Now().Format("15:04:05"),
}
// テンプレートを描画
tpl.Execute(w, m)
}
clock.tpl<!DOCTYPE html>
<html><body>
<p>Date={{.Date}}</p>
<p>Time={{.Time}}</p>
</body></html>
그리고 실행하고, 방문하면 이런 느낌입니다.{{.date}}
과{{.time}}
맵의 원소로 대체됩니다.참고로 맵이 아니라 구조체도 사용할 수 있습니다.
server.go(구조 예
package main
import (
"fmt"
"html/template"
"log"
"net/http"
"time"
)
func main() {
// /now にアクセスした際に処理するハンドラーを登録
http.HandleFunc("/now", handleClockTpl)
// サーバーをポート8080で起動
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handleClockTpl(w http.ResponseWriter, r *http.Request) {
// テンプレートをパース
tpl := template.Must(template.ParseFiles("clock.tpl"))
type DateTime struct {
Date string
Time string
}
now := DateTime{Date: time.Now().Format("2006-01-02"), Time: time.Now().Format("15:04:05")}
// テンプレートを描画
tpl.Execute(w, now)
}
디자인 부분을 다른 문서로 만드는 것이 프로그램을 보기 쉽고 관리하기 쉽다.몇 줄짜리 프로그램이면 모를 수도 있어요. (웃음)
또한 표준 템플릿을 사용하고 싶지 않은 템플릿 파일에 다른 템플릿 파일을 포함하는 방법을 사용하고 싶어서 템플릿 엔진을 직접 만들어 보았습니다.
관심 있는 분은 아래부터 시작하세요.
Golang의 포함 (include) 대응 템플릿 (goingtpl) 을 만들어 보았습니다
Reference
이 문제에 관하여(Golang 템플릿 사용 시도), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kamina/items/58e5290ff0f569a76331텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)