action 相关知识

什么是 action

action 是嵌入 html 模板的命令,位于 {{}} 中间,例如 . 就是一个 action 代表了传入模板的数据。

条件 action

语法 :

{{ if arg }}
    逻辑
{{ end }}

{{ if arg }}
    ......
{{ else }}
    ......
{{ end }}

遍历 action

语法

{{ range array }}
    ... {{ . } //此处 . 代表遍历过程变量
{{ end }}

with 改变 . 的作用范围

语法 :

{{ 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>