Go语言template相关知识

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)`
posted @ 2023-01-17 00:47  wangturing  阅读(223)  评论(0)    收藏  举报