action 是嵌入 html 模板的命令,位于 {{}} 中间,例如 . 就是一个 action 代表了传入模板的数据。
语法 :
{{ if arg }}
逻辑
{{ end }}
{{ if arg }}
......
{{ else }}
......
{{ end }}
语法
{{ range array }}
... {{ . } //此处 . 代表遍历过程变量
{{ end }}
语法 :
{{ with "ok" }}
{{.}}
{{ end }}
语法 :
{{template 模板名称 .}}
利用 . 传递模板变量
main.go
package main
import (
"net/http"
"text/template"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
tmp, _ := template.ParseFiles("./tmpls/index.html", "./tmpls/header.html")
// 定义数据结构体
type Data struct {
Name string
List []string
}
data := Data{
Name: "lesscode",
List: []string{"a", "b", "c"},
}
// 传入数据
tmp.Execute(w, data)
})
http.ListenAndServe(":80", nil)
}
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>Go</title>
</head>
<body>
{{template "header.html" .}}
{{if .Name}}
<h2>hi.. {{.Name}}</h2>
{{end}}
{{ range .List }}
<div>- {{.}} -</div>
{{ end }}
<div>
{{ with "ok" }}
{{.}}
{{ end }}
</div>
</body>
</html>
header.html
<div style="height:50px; background:red;">
header..{{.Name}}
</div>