基础渲染
注意:
//需要提前配置模板的文件
r.LoadHTMLGlob("htmls/*")
//html页面模板渲染
r.GET("/userhtml", func(a *gin.Context) {
//
userdata := &User{
Name: "梁鑫",
Age: 21,
Email: "18393900549@163.com",
Phone: "18396900549",
}
a.HTML(200, "user.html", userdata)
})
//html页面里面接收数据
<h2>这是用户信息页面</h2>
<br>
姓名:<h3>{{.Name}}</h3>
<br>
年龄:<h3>{{.Age}}</h3>
<br>
邮箱:<h3>{{.Email}}</h3>
<br>
电话:<h3>{{.Phone}}</h3>
<br>
模板文件分为前后台多级目录时的处理
//首先是模板文件加载
r.LoadHTMLGlob("htmls/*")变为r.LoadHTMLGlob("htmls/**/*")
模板文件原来的结构:htmls/文件变为htmls/index 和htmls/admin
html文件的首尾需要加上:
{{define "admin/index.html"}}或者{{define "index/index.html"}}
前端页面内容
{{end}}
//html页面模板渲染
r.GET("/userhtml", func(a *gin.Context) {
//
userdata := &User{
Name: "梁鑫",
Age: 21,
Email: "18393900549@163.com",
Phone: "18396900549",
}
a.HTML(200, "admin/user.html", userdata)//这里的目录与define中相同
})
模板文件里面的操作
定义变量
{{$user := .Name}}
<h4>{{$user}}</h4>
比较函数
eq 相当于==
ne 相当于!=
lt 小于
le <=
gt >
ge >=
条件判断
{{if ge .score 60}}
{{else if}}
{{else}}
{{end}}
循环遍历
{{range $key,$value := 遍历的数据(比如切片)}}
输出
{{else}}
没有数据的时候会走这里出去
{{end}}
解构结构体
{{with .user}}
<p>{{.user.name}}</p>就可以写成<p>{{.name}}
{{end}}
预定义函数
and
or
not
len {{len .user.name}}//使用
index
自定义模板函数
func UnixToTime(timestamp int64) string {
time := time.Unix(timestamp, 0)
return time.Format("2006-01-02 15:04:05")
}
func main(){
r := gin.Default()
//自定义模板函数 在r和配置模板文件前定义
r.SetFuncMap(template.FuncMap{
"UnixToTime": UnixToTime,
})
//需要提前配置模板的文件
r.LoadHTMLGlob("htmls/*")
<p>{{UnixToTime .time}}</p>//年月日
}
模板文件中引入公共模板
<!--引入公共样式-->
{{template "common/header.html" .}}
静态资源配置
//配置静态web目录
r.Static("/static","./static" )