Gin模板語法
文章目錄
- <center> Gin模板語法
- 前提提醒
- Gin框架啟動服務器
- 模板解析
- 模板渲染
- 遇到不同目錄下相同的文件如何加載和渲染
- 自定義函數
- 加載靜態文件
前提提醒
- 由于有了前面template包的基礎,所以該筆記不再過多詳細分析
Gin框架啟動服務器
- 語法:
r:=gin.Default()
//獲取一個Engine變量r.Get("網站路徑",handleFunc...)
//Get請求r.Run(addr ...string)
//啟動服務器
模板解析
- 語法:
r.LoadHTMLFiles(...filename)
r.LoadHTMLGlob("./ginTemplates/**/*")
(正則表達式解析所有文件,"**"代表表示任意層級子目錄, *代表任意文件
模板渲染
-
語法:
-
r.Get("網站路徑",handleFunc...)
-
例子
r.GET("/posts/index", func(c *gin.Context) {c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{"title": "歡迎來到POSTS世界","url": "<a href = 'http://localhost:9000/users/index'>USER世界</a>",})})
-
遇到不同目錄下相同的文件如何加載和渲染
-
方法: 在
tmpl
模板中用define
關鍵字定義名字,再解析 -
例子:
{{/*通過定義名字區分不同目錄下相同文件名的文件渲染和解析*/}} {{define "posts/index.tmpl"}}//<----主要是這里 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8">{{/*加載css靜態文件需要在頭部連接*/}}<link rel="stylesheet" href="/xxx/index.css"><title>Gin模板渲染</title> </head> <body> <script src = "/xxx/index.js"></script> <h1>{{.title}}</h1> <p>{{.url | safe}}</p> <p>{{hello}}</p> </body> </html> {{end}}
自定義函數
-
語法:
r.SetFuncMap(funcMap template.FuncMap)
//其內部包裝的是template.FuncMap
,所以原理一樣
-
注意:需要在模板解析前添加自定義函數
-
例子
r.SetFuncMap(template.FuncMap{"safe": func(str string) template.HTML {return template.HTML(str) //強轉},"hello": func() string {return "hello"},})
-
用法:
-
像是
safe
這種可以傳參的,可以通過"|"符號應用到某個字符中 -
例子:
//tmpl <p>{{.url | safe}}</p>//后端 r.GET("/posts/index", func(c *gin.Context) {c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{"title": "歡迎來到POSTS世界","url": "<a href = 'http://localhost:9000/users/index'>USER世界</a>",})})
- 這里的url會被轉義為
template.HTML
類型輸出到網頁中
- 這里的url會被轉義為
-
像
hello
這種只是傳文字的可以直接使用 -
例子:
//tmpl <p>{{hello}}</p>//后端 r.GET("/posts/index", func(c *gin.Context) {c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{"title": "歡迎來到POSTS世界","url": "<a href = 'http://localhost:9000/users/index'>USER世界</a>",})})
-
加載靜態文件
-
語法:
r.Static(參數1,參數2)
-
第一個參數"/xxx"表示在請求URL中使用的訪問前綴。 第二個參數:為實際文件所在目錄的路徑*/
-
-
使用
-
在
css
中演示(其他基本一致) -
例子:
<link rel="stylesheet" href="/xxx/index.css">//后端 r.Static("/xxx", "./statics")
- 這里的
/xxx
是請求URL中使用的訪問前綴 ./statics
為文件目錄的路徑/index.css
為目標文件的路徑
- 這里的
-