前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gin框架之HTML模板渲染

gin框架之HTML模板渲染

作者头像
大话swift
发布2020-03-12 18:20:52
5.3K0
发布2020-03-12 18:20:52
举报
文章被收录于专栏:大话swift

使用 LoadHTMLGlob() 或者 LoadHTMLFiles()

首先我们的目录结构如下

代码语言:javascript
复制
package main
import "net/http"import "github.com/gin-gonic/gin"
func main() {  router := gin.Default()  //加载templates目录下面所欲的文件  router.LoadHTMLGlob("templates/*")  router.GET("/", func(c *gin.Context) {    //定义模板,并给模板赋值    c.HTML(http.StatusOK, "index.html", gin.H{      "title": "gin框架之HTML模板渲染",    })  })  router.Run(":8080")}

模板内容如下

代码语言:javascript
复制
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>{{.title}}</title></head><body><html><h1>    {{ .title }}</h1></html></body></html>

分目录加载模板

分级加载就需要给每个模板定义名称

代码语言:javascript
复制
package main
import "net/http"import "github.com/gin-gonic/gin"
func main() {  router := gin.Default()  //templates/**/* 表示加载templates的子目录下的文件   router.LoadHTMLGlob("templates/**/*")  router.GET("/a", func(c *gin.Context) {    //定义模板,并给模板赋值    c.HTML(http.StatusOK, "a", gin.H{      "title": "gin框架之HTML模板渲染-a",    })  })  router.GET("/b", func(c *gin.Context) {    //定义模板,并给模板赋值    c.HTML(http.StatusOK, "b", gin.H{      "title": "gin框架之HTML模板渲染-b",    })  })  router.Run(":8080")}

a.html

代码语言:javascript
复制
{{/*定义模板名称为a*/}}{{define "a"}}    <!DOCTYPE html>    <html lang="en">    <head>        <meta charset="UTF-8">        <title>{{.title}}</title>    </head>    <body>    <html>    <h1>        {{ .title }}    </h1>    </html>    </body>    </html>{{end}}

b.html

代码语言:javascript
复制
{{/*定义模板名称为b*/}}{{define "b"}}    <!DOCTYPE html>    <html lang="en">    <head>        <meta charset="UTF-8">        <title>{{.title}}</title>    </head>    <body>    <html>    <h1>        {{ .title }}    </h1>    </html>    </body>    </html>{{end}}

我们才用define的方式定义了模板名称,加载模板的时候我们可以直接写模板的名称。例如

代码语言:javascript
复制
    //加载名称为a的模板,并给模板赋值    c.HTML(http.StatusOK, "a", gin.H{      "title": "gin框架之HTML模板渲染-a",    })
自定义模板渲染器

你可以使用自定义的 html 模板渲染

代码语言:javascript
复制
import "html/template"

func main() {
	router := gin.Default()
	html := template.Must(template.ParseFiles("file1", "file2"))
	router.SetHTMLTemplate(html)
	router.Run(":8080")
}
自定义分隔符

你可以使用自定义分隔

代码语言:javascript
复制
	r := gin.Default()
	r.Delims("{[{", "}]}")
	r.LoadHTMLGlob("/path/to/templates")
自定义模板函数
代码语言:javascript
复制
package main
import (  "html/template"  "net/http")import "github.com/gin-gonic/gin"
func myFunc(s string) string {  return s + "myFunc"}func main() {  router := gin.Default()  //给模板添加自定义函数  router.SetFuncMap(template.FuncMap{    "myFunc": myFunc,  })  //templates/**/* 表示加载templates的子目录下的文件  router.LoadHTMLGlob("templates/**/*")  router.GET("/a", func(c *gin.Context) {    //加载名称为a的模板,并给模板赋值    c.HTML(http.StatusOK, "a", gin.H{      "title": "gin框架之HTML模板渲染-a",    })  })  router.GET("/b", func(c *gin.Context) {    //定义模板,并给模板赋值    c.HTML(http.StatusOK, "b", gin.H{      "title": "gin框架之HTML模板渲染-b",    })  })  router.GET("/func", func(c *gin.Context) {    //定义模板,并给模板赋值    c.HTML(http.StatusOK, "func", gin.H{      "title": "gin框架之HTML模板渲染- ",    })  })  router.Run(":8080")}

模板调用自定义函数

代码语言:javascript
复制
{{/*定义模板名称为func*/}}{{define "func"}}    <!DOCTYPE html>    <html lang="en">    <head>        <meta charset="UTF-8">        <title>{{.title}}</title>    </head>    <body>    <html>    <h1>{{/*        调用自定义函数*/}}        {{ .title|myFunc }}    </h1>    </html>    </body>    </html>{{end}}

运行结果

代码语言:javascript
复制
gin框架之HTML模板渲染- myFunc
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义模板渲染器
  • 自定义分隔符
  • 自定义模板函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档