package main

import (
"github.com/gin-gonic/gin"
"net/http"
) func login(ctx *gin.Context) {
ctx.JSON(http.StatusOK, map[string]interface{}{
"username": "李四",
"password": 123465,
})
} func main() {
// HTML渲染,
router := gin.Default()
//router.LoadHTMLFiles("templates/index.html", "templates/login.html")
//router.LoadHTMLGlob("templates/*")
// 使用不同目录下名称相同的模板
router.LoadHTMLGlob("templates/**/*")
router.GET("/users/index", func(context *gin.Context) {
context.HTML(http.StatusOK, "users/index.html", gin.H{
"title": "Users",
})
})
router.GET("/center/index", func(context *gin.Context) {
context.HTML(http.StatusOK, "center/index.html", gin.H{
"title": "Center",
})
})
router.GET("/login", login)
router.Run()
}

  

目录结构

html代码

<!DOCTYPE html>
{{ define "center/index.html" }}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>{{ .title }}</h1>
</body>
</html>
{{ end }}

  

2. 自定义HTML模板渲染器

package main

import (
"github.com/gin-gonic/gin"
"html/template"
"net/http"
) func main() {
router := gin.Default()
// 自定义html模板渲染器,要指定所有的html路径,不推荐
html := template.Must(template.ParseFiles(
"templates/login.html",
"templates/users/index.html",
"templates/center/index.html",
))
router.SetHTMLTemplate(html)
router.GET("/users/index", func(context *gin.Context) {
context.HTML(http.StatusOK, "users/index.html", gin.H{
"title": "users/index.html",
})
})
router.Run()
}

  

3.  自定义分隔符、模板功

package main

import (
"fmt"
"github.com/gin-gonic/gin"
"html/template"
"net/http"
"time"
) func formatAsDate(t time.Time) string {
year, month, day := t.Date()
return fmt.Sprintf("%d-%02d-%02d", year, month, day)
} func main() {
router := gin.Default()
// 自定义分隔符
router.Delims("{[{", "}]}")
// 自定义模板功能
router.SetFuncMap(template.FuncMap{
"formatAsDate": formatAsDate,
})
// 加载模板文件路径
router.LoadHTMLGlob("templates/**/*")
router.GET("/users/index", func(context *gin.Context) {
context.HTML(http.StatusOK, "users/index.html", map[string]interface{}{
"now": time.Date(2021, 10, 15, 0, 0, 0, 0, time.Local),
})
})
router.Run()
}

  

hmtl代码

<!DOCTYPE html>
{[{ define "users/index.html" }]}
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>
{[{ .now | formatAsDate }]}
</h2>
</body>
</html>
{[{ end }]}

  

gin中HTML渲染的更多相关文章

  1. 【转载】OLE控件在Direct3D中的渲染方法

    原文:OLE控件在Direct3D中的渲染方法 Windows上的图形绘制是基于GDI的, 而Direct3D并不是, 所以, 要在3D窗口中显示一些Windows中的控件会有很多问题 那么, 有什么 ...

  2. Unity Shader入门精要学习笔记 - 第16章 Unity中的渲染优化技术

    转自冯乐乐的 <Unity Shader 入门精要> 移动平台的特点 为了尽可能一处那些隐藏的表面,减少overdraw(即一个像素被绘制多次),PowerVR芯片(通常用于ios设备和某 ...

  3. Flask中的渲染变量

    Flask中的渲染变量 一.渲染变量 <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  4. [RN] React-Native中Array渲染的优化

    React-Native中Array渲染的优化 例如用Push加进去的数据: constructor(props){    super(props);    this.state = {      b ...

  5. gin框架中的渲染

    各种数据格式的响应 json.结构体.XML.YAML类似于java的properties.ProtoBuf 点击查看代码 // json响应 func someJson(context *gin.C ...

  6. gin中XML/JSON/YAML/ProtoBuf 渲染

    package main import ( "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/testdata/p ...

  7. 关于vue.js中列表渲染练习

    html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...

  8. 关于vue.js中条件渲染的练习

    html: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8 ...

  9. cocos2dx 3.x中的渲染机制

    1.由2.x的渲染节点,变成添加渲染命令,可以避免重复渲染相同的节点,提高了渲染效率 2.单机游戏通常要求apk包在30M以内,没压缩1M会有1%的转换率(下载转换率),即收入会提高 3.2.x中首先 ...

随机推荐

  1. 【LeetCode】169. Majority Element 解题报告(Java & Python & C+)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 思路 hashmap统计次数 摩尔投票法 Moore ...

  2. 【剑指Offer】旋转数组中的最小数字 解题报告(Python)

    [剑指Offer]旋转数组中的最小数字 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-intervie ...

  3. MySQL 中常见的时间类型有三种 DATE, DATETIME 和 TIMESTAMP

    MySQL 中常见的时间类型有三种 DATE, DATETIME 和 TIMESTAMP,其中 DATE 类型用于表示日期,但是不会包含时间,格式为 YYYY-MM-DD,而 DATETIME 和 T ...

  4. 【Java笔记】Java使用mysql包注意

    注意 安装的mysql5.x版本对应 5.x版本的驱动包 安装的mysql8.x版本对应 8.x版本的驱动包 如果安装的MySQL版本和驱动包版本不符合,则Java的连接不了数据库

  5. 【MySQL作业】SELECT 数据查询——美和易思MySQL运算符应用习题

    点击打开所使用到的数据库>>> 1.查询指定姓名的客户(如"张晓静")的地址和电话号码. select address 地址, phone 电话号码 from c ...

  6. 编写Java程序,实现多线程操作同一个实例变量的操作会引发多线程并发的安全问题。

    查看本章节 查看作业目录 需求说明: 多线程操作同一个实例变量的操作会引发多线程并发的安全问题.现有 3 个线程代表 3 只猴子,对类中的一个整型变量 count(代表花的总数,共 20 朵花)进行操 ...

  7. 涂鸦智能 dubbo-go 亿级流量的实践与探索

    涂鸦智能 dubbo-go 亿级流量的实践与探索 dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力.而 dubbo-go 在 ...

  8. Kerberos认证过程学习理解

    概念: Kerberos服务器:AS认证服务器,TGS服务授权服务器 Client 客户端,代表使用应用的用户 AppServer 服务端,应用提供各种服务的服务器 Client在Kerberos注册 ...

  9. Storm集群安装Version1.0.1

    Storm集群安装,基于版本1.0.1, 使用apache-storm-1.0.1.tar.gz安装包. 1.安装规划 角色规划 IP/机器名 安装软件 运行进程 nimbus zdh-237 sto ...

  10. PDF的信息提取的问题

    PDF对企业应用来说是刚需.   然而PDF显然不是一种对机器友好的格式,它只是对人类友好,就是说方便阅读打印,但让程序去提取其中的内容却很难.下面简单说说为什么是这样.   以前还读书的时候(20+ ...