上一篇文章我们讨论了简单的gin渲染前端模板的例子,但是如果我们要对模板文件进行分类的话需要另外设置
r.LoadHTMLGlob("templates/**/*")//如果要设置多级目录 就可以追加 /**/**/**/*
需要在html文件前后加入如下代码
{{define "circulate/c.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>Document</title> </head> <body> </body> </html> {{end}}
前台的go
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r.GET("/qiantai", func(c *gin.Context) { c.HTML(http.StatusOK, "qiantai/index.html", gin.H{ "title": "首页", "slogan": "欢迎访问", }) }) r.Run(":8081") }
前台的代码index.html
{{define "qiantai/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>{{.title}} </title> </head> <body> {{.slogan}} </body> </html> {{end}}
运行结果
后台的go
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r.GET("/admin", func(c *gin.Context) { c.HTML(http.StatusOK, "admin/index.html", gin.H{ "title": "后台", "slogan": "这是管理员后台", }) }) r.Run(":8081") }
后台的html
{{define "admin/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>{{.title}}</title> </head> <body> {{.slogan}} </body> </html> {{end}}
运行结果
赋值运算的go
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r.GET("/var", func(c *gin.Context) { c.HTML(http.StatusOK, "var/index.html", gin.H{ "title": "变量", "slogan": "变量赋值", }) }) r.Run(":8081") }
赋值运算的html
{{define "var/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>Document</title> </head> <body> {{$info:=.slogan}} <h1>{{$info}}</h1> </body> </html> {{end}}
运行结果
二元运算符和主流编程语言的有差别,具体如下图
二元运算符的go
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r.GET("/score", func(c *gin.Context) { c.HTML(http.StatusOK, "score/score.html", gin.H{ "title": "二元运算符", "score": 88, }) }) r.Run(":8081") }
二元运算符的html
{{define "score/score.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>{{.title}}</title> </head> <body> {{if gt .score 90}} <h2>优秀</h2> {{else if gt .score 80}} <h2>良好</h2> {{else if gt .score 60}} <h2>及格</h2> {{else }} <h2>不及格</h2> {{end}} </body> </html> {{ end }}
运行结果
切片循环的go
package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r.GET("/circulate", func(c *gin.Context) { c.HTML(http.StatusOK, "circulate/c.html", gin.H{ "slice": []string{"早晨起床头件事", "先背一遍展开式", "经典的错误", "标准的零分"}, "list": []interface{}{ Blog{"百度", "www.baidu.com", "国内最好的搜索引擎"}, Blog{"space of Lee", "blog.lyt11.cn", "hexo个人博客"}, Blog{"哔哩哔哩", "www.bilibili.com", "弹幕网站"}, }, }) }) r.Run(":8081") }
切片循环的html
{{define "circulate/c.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>Document</title> </head> <body> <ul> {{range $key,$value:=.slice}} <li>{{$key}}------------{{$value}}</li> {{end}} </ul> <ul> {{range $key,$value:=.list}} <li>{{$key}}----{{$value.Name}}-------{{$value.Site}}--------{{$value.Slogan}}</li> {{end}} </ul> </body> </html> {{end}}
运行结果