GIN框架
Gin 是 Go语言写的一个 web 框架,它具有运行速度快,分组的路由器,良好的崩溃捕获和错误处理,非常好的支持中间件和 json。
模板渲染
渲染模板前需要使用LoadHTMLGlob()或者LoadHTMLFiles()方法加载模板。
router := gin.Default() router.LoadHTMLGlob("templates/*")
// router.LoadHTMLFiles("templates/template1.html", "templates/template2.html")
全部模板放在一个目录里面的配置方法
1、新建index.html文件
我们首先在项目根目录新建 templates 文件夹,然后在文件夹中新建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>
<h1> html 模板</h1>
<h3>{{.title}}</h3>
</body>
</html>
2、编辑server.go文件
目前我们在学习,真正投入项目中应该另写一个文件
router.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{ "title": "Main website", })
})
模板放在不同目录里面的配置方法
Gin 框架中如果不同目录下面有同名模板的话我们需要使用下面方法加载模板
- 注意*:定义模板的时候需要通过 define 定义名称 templates/admin/index.html <相当于给模板定义一个名字 define end 成对出现>
{{ 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>Document</title>
</head>
<body>
<h1>后台index</h1>
<h3>{{.title}}</h3>
</body>
</html>
{{ end }}
2、修改server.go文件
func main() {
router := gin.Default()
router.LoadHTMLGlob("templates/**/*") //注意:多级目录下的写法
router.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "default/index.html", gin.H{ "title": "前台首页", })
})
router.GET("/admin", func(c *gin.Context) {
c.HTML(http.StatusOK, "admin/index.html", gin.H{ "title": "后台首页", })
})
router.Run(":8080")
}
gin 模板基本语法
1、{{.}} 输出数据
模板语法都包含在{{和}}中间,其中{{.}}中的点表示当前对象。 当我们传入一个结构体对象时,我们可以根据.来访问结构体的对应字段。
//声明一个结构体
type Student struct { Name string
Sex string
Age int }
//在函数体中实例化
user := Student{ Name: "张三",
Sex: "男",
Age: 18,
}
router.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{
"title": "前台首页",
"user": user, })
修改前端相应html文件
{{ define "default/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>
<h1>前台模板</h1>
<h3>{{.title}}</h3>
<h4>{{.user.Name}}</h4>
<h4>{{.user.Age}}</h4>
</body>
</html>
{{end}}
当我们需要注释代码的时候,需要使用{{/* nocode */}},
- 注意:注释执行时会忽略,可以多行,注释不能嵌套,并且必须紧贴分界符始止。
2、变量
我们还可以在模板中声明变量,用来保存传入模板的数据或其他语句生成的结果。具体语法如下: 修改html文件:
<h4>{{$obj := .title}}</h4>
<h4>{{$obj}}</h4>
将title赋值给obj,并且在前端页面展示obj
3、移除空格
我们在使用模板语法的时候会不可避免的引入一下空格或者换行符,这样模板最终渲染出来的内容可能就和我们想的不一样,这个时候可以使用{{-语法去除模板内容左侧的所有空白符号, 使用-}}去除模板内容右侧的所有空白符号。
{{- .Name -}}
- 注意:-要紧挨{{和}},同时与模板值之间需要使用空格分隔。
本文正在参加技术专题18期-聊聊Go语言框架