go模板引擎生成html,goweb-模板引擎
模板引擎
Go 為我們提供了 text/template 庫和 html/template 庫這兩個模板引擎,模板引
擎通過將數據和模板組合在一起生成最終的 HTML,而處理器負責調用模板引擎并將引
擎生成的 HTMl 返回給客戶端。
Go 的模板都是文本文檔(其中 Web 應用的模板通常都是 HTML),它們都嵌入了
一些稱為動作的指令。從模板引擎的角度來說,模板就是嵌入了動作的文本(這些文本
通常包含在模板文件里面),而模板引擎則通過分析并執行這些文本來生成出另外一些
文本。
HelloWorld
使用 Go 的 Web 模板引擎需要以下兩個步驟:
(1) 對文本格式的模板源進行語法分析,創建一個經過語法分析的模板結構,其中
模板源既可以是一個字符串,也可以是模板文件中包含的內容。
(2 )執行經過語法分析的模板,將 ResponseWriter 和模板所需的動態數據傳遞給模
板引擎,被調用的模板引擎會把經過語法分析的模板和傳入的數據結合起來,生成出最
終的 HTML,并將這些 HTML 傳遞給 ResponseWriter。
下面就讓我們寫一個簡單的 HelloWorld
創建模板文件 hello.html
模板文件//嵌入動作 {{.}}
在處理器中觸發模板引擎
func handler(w http.ResponseWriter, r *http.Request) {
//解析模板文件
t, _ := template.ParseFiles("hello.html")
//執行模板
t.Execute(w, "Hello World!")
}
瀏覽器中的結果
Hello World!
解析模板
ParseFiles 函數
當我們調用 ParseFiles 函數解析模板文件時,Go 會創建一個新的模板,
并將給定的模板文件的名字作為新模板的名字,如果該函數中傳入了多個
文件名,那么也只會返回一個模板,而且以第一個文件的文件名作為模板
的名字,至于其他文件對應的模板則會被放到一個 map 中。讓我們再來
看一下 HelloWorld 中的代碼:
t, _ := template.ParseFiles("hello.html")
以上代碼相當于調用 New 函數創建一個新模板,然后再調用 template 的
ParseFiles 方法:
t := template.New("hello.html")
t, _ = t.ParseFiles("hello.html")
我們在解析模板時都沒有對錯誤進行處理,Go 提供了一個 Must 函數專
門用來處理這個錯誤。Must 函數可以包裹起一個函數,被包裹的函數會
返回一個指向模板的指針和一個錯誤,如果錯誤不是 nil,那么 Must 函數
將產生一個 panic。
實驗 Must 函數之后的代碼
t := template.Must(template.ParseFiles("hello.html"))
ParseGlob 函數
通過該函數可以通過指定一個規則一次性傳入多個模板文件,如:
t, _ := template.ParseGlob("*.html")
執行模板
通過 Execute 方法
如果只有一個模板文件,調用這個方法總是可行的;但是如果有多個模板
文件,調用這個方法只能得到第一個模板
通過 ExecuteTemplate 方法
例如:
t, _ := template.ParseFiles("hello.html", "hello2.html")
變量 t 就是一個包含了兩個模板的模板集合,第一個模板的名字是
hello.html,第二個模板的名字是 hello2.html,如果直接調用 Execute 方法,
則只有模板 hello.html 會被執行,如何想要執行模板 hello2.html,則需要
調用 ExecuteTemplate 方法
t.ExecuteTemplate(w, "hello2.html", "我要在 hello2.html 中顯示")
總結
以上是生活随笔為你收集整理的go模板引擎生成html,goweb-模板引擎的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: :after伪类+content内容清除
- 下一篇: python爬虫爬汽车图片_Python