Gin框架模板渲染
演示实例
在当前工作目录下创建/templates/posts/index.tmpl,/templates/users/index.tmpl
posts/index.tmpl
{{/* Path : ./templates/posts/index.tmpl */}}
{{define "posts/index.tmpl"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href = "/xxx/index.css">
<title>posts/index</title>
</head>
<body>
{{.title|safe}}
<script src = "/xxx/index.js"></script>
</body>
</html>
{{end}}
users/index.tmpl
{{/* Path : ./templates/users/index.tmpl */}}
{{define "users/index.tmpl"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href = "/xxx/index.css">
<title>users/index</title>
</head>
<body>
{{.title|safe}}
<script src = "/xxx/index.js"></script>
</body>
</html>
{{end}}
Golang程序
package main
import (
"github.com/gin-gonic/gin"
"html/template"
"net/http"
)
func main(){
// 创建一个默认的路由引擎
r := gin.Default()
// 加载静态文件
r.Static("/xxx","./statics")
// gin框架中给模板添加自定义函数
r.SetFuncMap(template.FuncMap{
"safe":func( str string )template.HTML{
return template.HTML(str)
},
})
//Gin框架中使用LoadHTMLGlob()或者LoadHTMLFiles()方法进行HTML模板渲染。
r.LoadHTMLFiles("templates/posts/index.tmpl","templates/users/index.tmpl")
//r.LoadHTMLGlob("templates/**/*")
// GET:请求方式;/index:请求的路径
// 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数
r.GET("/posts/index", func(c *gin.Context) {
c.HTML(http.StatusOK,"posts/index.tmpl",gin.H{
"title":"posts/index",
})
})
r.GET("/users/index", func(c *gin.Context) {
c.HTML(http.StatusOK,"users/index.tmpl",gin.H{
"title":"user/index",
})
})
r.Run()
}
上课笔记
https://goproxy.io/
: 更换国内代理go get -u github.com/gin-gonic/gin
: 命令行下获取gin框架
gin.Default()
:默认的引擎r.Static("/xxx","./statics")
加载静态文件'/xxx'
-relativePath
:tmpl
中显示的路径,root
:实际在工作目录调用SetFuncMap
: 是gin框架
中引擎加载自定义函数,template.FuncMap
:编写template
的模板自定义函数- Gin框架中使用
LoadHTMLGlob()
或者LoadHTMLFiles()
方法进行HTML模板渲染。
LoadHTMLGlob("templates/**/*")
r.LoadHTMLFiles("templates/posts/index.tmpl","templates/users/index.tmpl")
r.GET("/users/index", func(c *gin.Context){})
,request发出GET
访问在IP地址+端口且在/users/index
的目录下,将以func(c *gin.Context)
中编写程序内容做出相应.c.HTML(http.StatusOK,"users/index.tmpl",gin.H{"title":"user/index",})
返回的response对象
,状态码为200
,其中以编写好的.tmpl
的文件展示,里面参数以map[string]interface{}
的形式传入
好家伙 这里都能看到