企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> Gin 框架默认封装了golang内置的html/template包用于处理html模版,如果你开发的是接口服务,不提供html页面可以跳过本章内容。 > 前置技术知识点:Go模版引擎相关教程:https://www.tizi365.com/archives/85.html [TOC] ## 返回html结果的例子 **后端代码** ~~~ func main() { // 初始化gin对象 router := gin.Default() // 首先加载templates目录下面的所有模版文件,模版文件扩展名随意 router.LoadHTMLGlob("templates/*") // 绑定一个url路由 /index router.GET("/index", func(c *gin.Context) { // 通过HTML函数返回html代码 // 第二个参数是模版文件名字 // 第三个参数是map类型,代表模版参数 // gin.H 是map[string]interface{}类型的别名 c.HTML(http.StatusOK, "index.html", gin.H{ "title": "Main website", }) }) // 启动http服务,并且绑定在8080端口 router.Run(":8080") } ~~~ **前端代码** > 文件名:`templates/index.html` ~~~ <html> <h1> {{ .title }} </h1> </html> ~~~ ## 处理模版子目录的情况 > 一般在项目中,templates目录下还会按照业务进行划分目录 **后端代码** ~~~ func main() { router := gin.Default() // 加载templates目录下面的所有模版文件,包括子目录 // **/* 代表所有子目录下的所有文件 router.LoadHTMLGlob("templates/**/*") router.GET("/posts/index", func(c *gin.Context) { // 子目录的模版文件,需要加上目录名,例如:posts/index.tmpl c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{ "title": "Posts", }) }) router.GET("/users/index", func(c *gin.Context) { // 子目录的模版文件,需要加上目录名,例如:users/index.tmpl c.HTML(http.StatusOK, "users/index.tmpl", gin.H{ "title": "Users", }) }) router.Run(":8080") } ~~~ **前端代码** > 文件名:`templates/posts/index.tmpl` ~~~ {{ define "posts/index.tmpl" }} <html> <h1>{{ .title }}</h1> <p>Using posts/index.tmpl</p> </html> {{ end }} ~~~ > 文件名:`templates/users/index.tmpl` ~~~ {{ define "users/index.tmpl" }} <html> <h1>{{ .title }}</h1> <p>Using users/index.tmpl</p> </html> {{ end }} ~~~