> 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 }}
~~~
- 基础知识
- 开发环境
- 包名规则
- 包初始化 (init)
- 基础数据类型
- 基础类型转换
- 格式化输出
- go指针
- 流程控制语句
- 函数定义
- 匿名函数
- 数组和切片
- map集合
- 结构体
- Interface接口
- 日期处理
- 数学计算
- 正则表达式
- 协程 (并发处理)
- channel
- waitgroup
- mutex (锁机制)
- websocket
- protobuf
- Redis
- 错误处理
- 打包程序
- NSQ消息队列
- 单元测试
- beego
- 安装入门
- Gin
- 快速入门
- 路由与控制器
- 处理请求参数
- 表单验证
- 处理响应结果
- 渲染HTML模版
- 访问静态文件
- Gin中间件
- Cookie处理
- Session处理
- Gin上传文件
- swagger
- pprof性能测试
- GORM
- 入门教程
- 模型定义
- 数据库连接
- 插入数据
- 查询数据
- 更新数据
- 删除数据
- 事务处理
- 关联查询
- 属于 (BELONG TO)
- 一对一 (Has One)
- 一对多 (Has Many)
- 多对多 (Many to Many)
- 预加载 (Preloading)
- 错误处理
- 第三方常用插件
- viper 读取配置文件
- zap 高性能日志
- Nginx代理配置
- Goland 快捷键