使用模板
-
簡述:
所謂的模板就是一個頁面的結構,然後依據不同的數據顯示不同的內容.舉個不太恰當的例子就是: 模板是一張成績單,每個人的成績就是上面的數據,因為每個人的成績不同,所以每個人看到的成績單也不同,但是成績單的基本格式依舊是一樣的.
模板文件一般一.tmpl
,.tpl
作為後綴,也可以使用.html
--除了模板的語法外,在佈局上的語法和html也是一樣的. -
使用模板的步驟:
使用模板一共分為三個步驟:- 編寫模板: 按照需求,編寫模板文件,也就是需要呈現的頁面.
- 解析模板: 用go提供的函數解析模板--將編寫的模板文件傳入到適當的函數當中.
- 渲染模板: 將需要顯示的數據傳遞到模板當中,替換原本的佔位符--簡單來說就是文本替換.
-
一個簡單的小例子:
首先定義一個模板文件index.html
,其具體的語法我會在後面的文章解釋:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>這個是使用模板文件渲染的結果</h1>
{{/*下面的{{.Name}}等均是從外界接受的參數佔位符,儅參數傳入之後就會替代其,其餘部分則按照原本的模樣輸出,不做改變**/}}
<p>Name: {{.Name}} </p>
<p>Sex: {{.Sex}} </p>
<p>Age: {{.Age}} </p>
</body>
</html>
在main.go
當中引入模板,並傳遞參數:
package main
import (
"fmt"
"net/http"
"text/template"
)
type Info struct {
Name string
Sex string
Age int
}
func homePage(w http.ResponseWriter, r *http.Request) {
// 解析模板,傳入的參數就是模板的路徑
tmpl, err := template.ParseFiles("./home.tmpl")
if err != nil {
fmt.Println("page is err!")
return
}
// 隨便定義一個需要傳遞的數據
people := Info{
Name: "張三",
Sex: "♂",
Age: 13,
}
// 渲染模板,將參數傳遞給模板,並期待其中的佔位符。
// 第一個參數必須是w,而第二個參數就是需要傳遞的數據。
tmpl.Execute(w, people)
}
func main() {
http.HandleFunc("/", homePage)
err := http.ListenAndServe(":8080", nil)
if err != nil {
fmt.Println("page not found!!")
return
}
}