關於template
模板,Golang語言提供了兩個包text/template
和html/template
,前者主要用來處理文本文件的變量渲染,然後者主要用於對html之類的網頁文件進行渲染。因爲最近在使用gin框架編寫REST API,順便學習template
的使用,再此記錄一下。html
html/template
經常使用的對象和方法template
模板的使用主要是在對Template
結構體的相關方法進行操做。咱們首先得初始化一個Template
對象。git
type Template struct { Tree *parse.Tree } # 初始化一個template對象 ## Must函數會在Parse返回err不爲nil時,調用panic,不須要初始化後再調用Parse方法去檢測 func Must(t *Template,err error) *Template ## New函數用來建立一個指定的HTML模板 func New(name string) *Template ## ParseFiles函數用來從一個指定的文件中建立並解析模板 func ParseFiles(filenames ...string) (*Template, error) ## ParseGlob函數從指定的匹配文件中建立並解析模板,必須得至少匹配一個文件 func ParseGlob(pattern string) (*Template, error) # Template結構體對象經常使用的幾個方法 ## 使用New()函數建立的模板須要指定模板內容 func (t *Template) Parse(text string) (*Template, error) ## Delims()方法用來指定分隔符來分割字符串,隨後會使用Parse, ParseFiles, or ParseGlob方法進行模板內容解析 func (t *Template) Delims(left, right string) *Template ## Execute()方法用來把一個模板解析到指定的數據對象data中,而且寫入到輸出wr中。若是有任何錯誤,就like中止,但若是是並行操做的話,有一些數據已經被寫入了。所以,使用該方法必定要注意併發安全性 func (t *Template) Execute(wr io.Writer, data interface{}) error ## 同上 func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{}) error
# 模板文件 $ $ cat app.tpl <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>layout</title> </head> <body> <h3>userslist:</h3> <p>userlist:</p>{{ .}} <p>users:</p> {{range $i,$e := .}} {{$i}}:{{$e}} {{end}} {{range .}} {{ .}} {{end}} </body> </html> # 示例程序 $ cat golanghtml.go package main import ( "html/template" "os" ) func main() { /* 1.聲明一個Template對象並解析模板文本 func New(name string) *Template func (t *Template) Parse(text string) (*Template, error) 2.從html文件解析模板 func ParseFiles(filenames ...string) (*Template, error) 3.模板生成器的包裝 template.Must(*template.Template, error )會在Parse返回err不爲nil時,調用panic。 func Must(t *Template, err error) *Template t := template.Must(template.New("name").Parse("html")) */ t, _ :=template.ParseFiles("app.tpl") //t,_ := template.ParseGlob("*.tpl") t.Execute(os.Stdout, []string{"bgbiao","biaoge"}) } $ go run golanghtml.go <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>layout</title> </head> <body> <h3>userslist:</h3> <p>userlist:</p>[bgbiao biaoge] <p>users:</p> 0:bgbiao 1:biaoge bgbiao biaoge </body> </html>
能夠看到,html文本成功的將咱們定義的[]string{"bgbiao","biaoge"}
進行渲染並輸出了。 歡迎關注個人公衆號 github