使用模板

  1. 簡述:
    所謂的模板就是一個頁面的結構,然後依據不同的數據顯示不同的內容.舉個不太恰當的例子就是: 模板是一張成績單,每個人的成績就是上面的數據,因為每個人的成績不同,所以每個人看到的成績單也不同,但是成績單的基本格式依舊是一樣的.
    模板文件一般一.tmpl,.tpl作為後綴,也可以使用.html--除了模板的語法外,在佈局上的語法和html也是一樣的.

  2. 使用模板的步驟:
    使用模板一共分為三個步驟:

    1. 編寫模板: 按照需求,編寫模板文件,也就是需要呈現的頁面.
    2. 解析模板: 用go提供的函數解析模板--將編寫的模板文件傳入到適當的函數當中.
    3. 渲染模板: 將需要顯示的數據傳遞到模板當中,替換原本的佔位符--簡單來說就是文本替換.
  3. 一個簡單的小例子:
    首先定義一個模板文件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
    }
}
原文地址:https://www.cnblogs.com/ltozvxe/p/14543999.html