静态化步骤
<1>按照Go模板语法定义一个模板文件
<h1 class="product-single__title uppercase">{{.ProductName}}</h1>
<div class="quantity">
{{.ProductNum}}
</div>
<2> 解析模板文件生成模板对象
tmpl, err := template.ParseFiles("./hello.tmpl")
<3>获取渲染数据
product, err := p.ProductService.GetProductByID(int64(productID))
<4>os库的openfile函数生成静态html文件
file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY, os.ModePerm)
<5>模板对象利用给定数据渲染静态文件
template.Execute(file, &product)
模板语法
模板语法都包含在{{
}}
中间,其中{{.}}
中的点表示当前对象。
当我们传入一个结构体对象时,我们可以根据.
来访问结构体的对应字段。
// main.go
type UserInfo struct {
Name string
Gender string
Age int
}
func sayHello(w http.ResponseWriter, r *http.Request) {
// 解析指定文件生成模板对象
tmpl, err := template.ParseFiles("./hello.tmpl")
if err != nil {
fmt.Println("create template failed, err:", err)
return
}
// 利用给定数据渲染模板,并将结果写入w
user := UserInfo{
Name: "小王子",
Gender: "男",
Age: 18,
}
tmpl.Execute(w, user)
}
模板文件如下
<body>
<p>Hello {{.Name}}</p>
<p>性别:{{.Gender}}</p>
<p>年龄:{{.Age}}</p>
</body>