gin day02 gin模板语法(上)

模板定义

随着项目的开发我们的html文件肯定也越来越多,必然不可能直接把所有html全部放在templates目录下,那么必然会在模板目录下再新建文件夹进行分类,所以之前的模板的设置方式就不在使用了

现改为

r.LoadHTMLGlob('./templates/**/*')

然后我们必须在html文件前定义其名字

image

我们可以看到在default目录下的index.html我们将其定义为如下

{{define "default/index.html"}}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>woshi admin news</h1>
</body>
</html>

{{end}}

模板变量的定义

在go语言中我们定义变量通常用var a int=30

而在模板中我们通常用$ a:=80

{{$a:=80}} <!--定义变量a-->
{{$a:=.title}}<!--title是后台传过来的值-->
{{$a}} <!--输出变量a-->

变量之间的比较

{{.score}} <!--后端传过来的score-->
{{ if ge .score 60 }} <!--ge 表示>=-->

{{else}}

{{end}}
  • ge表示>=
  • gt表示>
  • eq表示==
  • lt表示<
  • le表示<=
  • ne表示!=

if 语句

上面代码以提到在此不赘述

for循环遍历

遍历数组

假设后端传过来一个string1

r.GET("/",func(context *gin.Context){
context.HTML(200,"default/index.html",gin.H{
"string1":[5]string{"zhangsan","lisi","wangwu"},
})
})

html代码如下

{{range $_,$v= .string1}}
<li>{{$v}}</li>
{{else}}
<li>数组中没有数据</li>li>
{{}}

遍历切片

和数组几乎一样

假设后端传过来一个slice1

r.GET("/",func(context *gin.Context){
context.HTML(200,"default/index.html",gin.H{
"slice1":[]string{"zhangsan","lisi","wangwu"},
})
})

html代码如下

{{range $_,$v= .slice1}}
<li>{{$v}}</li>
{{else}}
<li>数组中没有数据</li>li>
{{}}

遍历结构体

定义一个结构体,并将其传入

type Article struct{
Title string
Content string
}
r.GET("/",func(context *gin.Context){
context.HTML(200,"default/news.html",gin.H{
"articles":[]interface{}{
&Article{
"Title":"title11",
"Content":"content11",
},
&Article{
"Title":"title22",
"Content":"content22",
},
},
})
})

这里要注意 ,

以下是html中的代码

{{ range $_,$v:=.articels }}
<li>{{$v.Title}}--{{$v.Content}}</li>
{{else}}
<li>结构体没数据</li>
{{end}}

image

with解析结构体

{{ with .new_articel }}
<p>{{.Title}}--{{.Content}}</p>
{{end}}

image