Gin 框架默认封装了golang内置的html/template包用于处理html模版,如果你开发的是接口服务,不提供html页面可以跳过本章内容。 前置技术知识点: - 模板引擎 - 点击[Go模板引擎教程](https://www.tizi365.com/archives/85.html),学习完整的模板引擎语法。 ## 1.返回html结果的例子 ```go 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 <html> <h1> {{ .title }} </h1> </html> ``` ## 2.处理模版子目录的情况 一般在项目中,因为有多个模块的模版文件,我们都会以多个子目录的方式来组织模版文件,上面的例子只能加载某个目录下面的模版文件,无法加载子目录的模版文件。 例子: ```go 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 ```html {{ define "posts/index.tmpl" }} <html><h1> {{ .title }} </h1> <p>Using posts/index.tmpl</p> </html> {{ end }} ``` 模版文件:templates/users/index.tmpl ```html {{ define "users/index.tmpl" }} <html><h1> {{ .title }} </h1> <p>Using users/index.tmpl</p> </html> {{ end }} ``` > 更多内容请关注我的博客[SOCKSTACk](https://www.sockstack.cn)