templeate三板斧
-
创建模版:
模版文件以
.tmpl
结尾, 文件的语法和html相同。 -
解析模版
t, err := template.ParseFile("./filename.tmpl") if err != nil { //错误处理 }
-
渲染模版
err = t.Execute(w, data) if err != nil { //错误处理 }
Execute()
函数第一个参数为ResponseWriter
接口类型的值, 第二参数为传入模版的数据。
模版语法:
表示传入的数据
{{.}}
假如传入的是一个结构体或者map
{{.字段名称}}
{{.key名称}}
模版的注释
{{/*这是一个注释*/}}
变量
$opp := {{.}}
条件判断
{{if 条件}} body {{end}}
{{if 条件}} body {{else}} body {{end}}
{{if 条件}} body {{else if 条件}} body {{end}}
range
{{range 数组}} 数组值 {{end}}
常见的预定义函数
比较函数
eq 等价于: arg1 ==
lt 等价于: arg1 < arg2,
le 等价于: arg1 <= arg2
自定义函数
1. 首先自定义一个函数
kua := func(arg string) string {
return "你好" + arg
}
2. 为模版添加一个函数
template.New().Funcs(传入一个函数).Parse()
修改模版语法
template.Delims("((", "))")
引入别的模版
{{template "base.tmpl"}}
{{define "content"}}
<div>Hello world</div>
{{end}}
模版继承
{{block "name" .}}{{end}}
继承别的模版
{{/*继承根模板*/}}
{{template "base.tmpl" .}}
{{/*重新定义块模板*/}}
{{define "content"}}
<h1>这是home2页面</h1>
<p>Hello {{ . }}</p>
{{end}}
如果继承别的模版需要换一个解析函数:
base.tmpl 是根模版, index.tmpl是子模版
`template.ParseFiles("./base.tmpl", "./index.tmpl")`
`err = t.ExecuteTemplate(w, "index.tmpl", msg)`
标签:body,tmpl,end,err,模版,知识,template,Go
From: https://www.cnblogs.com/zhengel/p/17056793.html