从字符串载入模板
我们可以定义模板字符串,然后载入并解析渲染:
template.New(tplName string).Parse(tpl string)
// 从字符串模板构建
tplStr := `
{ { .Name }} { { .Age }}
`
// if parse failed Must will render a panic error
tpl := template.Must(template.New("tplName").Parse(tplStr))
tpl.Execute(os.Stdout, map[string]interface{}{Name: "big_cat", Age: 29})
从文件载入模板
模板语法
模板文件,建议为每个模板文件显式的定义模板名称: { { define "tplName" }} ,否则会因模板对象名与模板名不一致,无法解析(条件分支很多,不如按一种标准写法实现),另展示一些基本的模板语法。
使用 { { define "tplName" }} 定义模板名
使用 { { template "tplName" . }} 引入其他模板
使用 . 访问当前数据域:比如 range 里使用 . 访问的其实是循环项的数据域
使用 $. 访问绝对顶层数据域
views/header.html
{ { define "header" }}
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
{ { .PageTitle }}{ { end }}
views/footer.html
{ { define "footer" }}
{ { end }}
views/index/index.html
{ { define "index/index" }}
{ {/*引用其他模板 注意后面的 . */}}
{ { template "header" . }}
hello, { { .Name }}, age { { .Age }}
{ { template "footer" . }}
{ { end }}
views/news/index.html
{ { define "news/index" }}