在一般网站开发中,我们经常遇到站点的头部、底部或者左侧菜单是一样的,我们可以使用组合模板来实现这样的功能。
实现组合模板的步骤
{{define "layout"}}
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<h1>公共头部</h1>
{{template "body" .}}
<h1>公共底部</h1>
</body>
</html>
{{end}}
如 home.html
{{ define "body" }}
<h2>{{.}}</h2>
{{ end }}
和 about.html
{{ define "body" }}
<h2>{{.}}</h2>
<p>关于 ......</p>
{{ end }}
package main
import (
"html/template"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles("./tmpls/layout.html", "./tmpls/home.html")
if err != nil {
println(err.Error())
return
}
t.ExecuteTemplate(w, "layout", "首页")
})
http.HandleFunc("/about", func(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles("./tmpls/layout.html", "./tmpls/about.html")
if err != nil {
println(err.Error())
return
}
t.ExecuteTemplate(w, "layout", "关于我们")
})
http.ListenAndServe(":80", nil)
}