Gin学习记录3——模版与渲染

这篇具有很好参考价值的文章主要介绍了Gin学习记录3——模版与渲染。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 返回

如果只是想返回数据,可以使用以下函数:

func (c *Context) JSON(code int, obj any)
func (c *Context) JSONP(code int, obj any)
func (c *Context) String(code int, format string, values ...any)
func (c *Context) XML(code int, obj any)
func (c *Context) YAML(code int, obj any)
func (c *Context) ProtoBuf(code int, obj any)

例如:

	r.GET("/", func(ctx *gin.Context) {
		ctx.JSON(200, gin.H{"status": "OK"})
	})

则会返回一个JSON
Gin学习记录3——模版与渲染,Golang学习记录,gin,学习,go,后端

二. 模版

2.1 基础模版

使用模版前,需要载入模版:

router.LoadHTMLGlob("templates/*")

使用func (c *Context) HTML(code int, name string, obj any)即可渲染:

	r.GET("/", func(ctx *gin.Context) {
		ctx.HTML(200, "index.html", gin.H{"title": "首页"})
	})

2.2 同名模版

每个模版的开始与结束需要使用{{ define }} {{ end }} 来定义模版名称,比如:

{{ define "APP1/index.html" }}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
</head>
<body>
    <h1>这是一个APP1模板</h1>
    <h3>{{.title}}</h3>
</body>
</html>
{{ end }}

载入的时候需要载入全部模版,调用时,需要使用在模版里定义的名称:

func main() {
	r := gin.Default()
	r.LoadHTMLGlob("template/**/*")
	r.GET("/APP1", func(ctx *gin.Context) {
		ctx.HTML(200, "APP1/index.html", gin.H{"title": "首页1"})
	})
	r.GET("/APP2", func(ctx *gin.Context) {
		ctx.HTML(200, "APP2/index.html", gin.H{"title": "首页2"})
	})
	r.Run(":80")
}

Gin学习记录3——模版与渲染,Golang学习记录,gin,学习,go,后端

2.3 模版继承

仅需要在模版里使用{{template "common/nav.html" .}}(注意最后的那个点),即可继承(嵌套)已存在的模版,提高复用率。文章来源地址https://www.toymoban.com/news/detail-707167.html

2.4 模版语法

  • 输出
{{ . }} .后面加对象,可以重复调用 eg:{{ .stu.name }}
  • 变量
{{ $obj := .xx}} 变量初始化
{{ $obj := xx}} 变量更改
{{ $obj }} 变量使用
  • 条件
{{if  pipeline}} T1 {{end}}
{{if  pipeline}} T1 {{else}} T0 {{end}}
{{if  pipeline}} T1 {{else if pipeline}} T0 {{end}}
  • 判断
{{ .A eq .B }}
eq 如果 arg1 == arg2 则返回真
ne 如果 arg1 != arg2 则返回真
lt 如果 arg1 < arg2 则返回真
le 如果 arg1 <= arg2 则返回真
gt 如果 arg1 > arg2 则返回真
ge 如果 arg1 >= arg2 则返回真
  • 循环
{{range $value := .}}
{{range $key,$value := .}}
  • 自定义模版函数
	router.SetFuncMap(template.FuncMap{
		"add": func(x, y int) int {
			return x + y
		},
	})
  • 预设函数
and
函数返回它的第一个 empty 参数或者最后一个参数;
就是说"and x y"等价于"if x then y else x";所有参数都会执行;

or
返回第一个非 empty 参数或者最后一个参数;
亦即"or x y"等价于"if x then x else y";所有参数都会执行;

not
返回它的单个参数的布尔值的否定

len
返回它的参数的整数类型长度

index
执行结果为第一个参数以剩下的参数为索引/键指向的值;
如"index x 1 2 3"返回 x[1][2][3]的值;每个被索引的主体必须是数组、切片或者字典。

print
即 fmt.Sprint

printf
即 fmt.Sprintf

println
即 fmt.Sprintln

html
返回与其参数的文本表示形式等效的转义 HTML。
这个函数在 html/template 中不可用。

urlquery
以适合嵌入到网址查询中的形式返回其参数的文本表示的转义值。
这个函数在 html/template 中不可用。

js
返回与其参数的文本表示形式等效的转义 JavaScript。

call
执行结果是调用第一个参数的返回值,该参数必须是函数类型,其余参数作为调用该函
数的参数;
如"call .X.Y 1 2"等价于 go 语言里的 dot.X.Y(1, 2);
其中 Y 是函数类型的字段或者字典的值,或者其他类似情况;
call 的第一个参数的执行结果必须是函数类型的值(和预定义函数如 print 明显不同);
该函数类型值必须有 12 个返回值,如果有 2 个则后一个必须是 error 接口类型;
如果有 2 个返回值的方法返回的 errornil,模板执行会中断并返回给调用模板执行者
该错误

eg:
{{len .title}}
{{index .hobby 2}}

到了这里,关于Gin学习记录3——模版与渲染的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go学习第十四章——Gin请求与响应

    在Gin中,我们可以使用不同的方法设置请求的响应值,包括String、JSON、HTML和XML等。 1.1 String 使用String方法 返回字符串 类型的响应内容。 当我们访问http://localhost:8080/users时,就能够在浏览器上看到输出了\\\"Users\\\"。 补充:这里的http.StatusOK,是可以修改的,可以直接写200,因为

    2024年02月06日
    浏览(33)
  • Go语言项目后端使用gin框架接收前端发送的三种格式数据(form-data,json,Params)

    使用gin框架的BindJSON方法,将前端的json格式数据将后端的结构体相绑定,从而获取到前端所发送的数据,并返回给前端 1.将前端发送过来的数据全部返回 2.将前端发送过来的json格式数据选择性返回   使用gin框架的PostForm方法,从而获取到前端form格式的参数 使用gin框架中的

    2024年02月01日
    浏览(36)
  • Go学习第十六章——Gin文件上传与下载

    1.1 入门案例(单文件) 1.2 服务端保存文件的几种方式 SaveUploadedFile SaveUploadedFile函数用于将文件保存到指定的路径下。第一个参数是文件对象,第二个参数是保存文件的路径。 Create+Copy FormFile函数用于获取上传的文件。它返回一个文件对象,其中包含了文件的元数据(名称、

    2024年02月08日
    浏览(32)
  • Go学习第十七章——Gin中间件与路由

    Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等 即比如,如果访问一个网页的话,不管访问什么路径都需要进行登录,

    2024年02月07日
    浏览(35)
  • Go学习第十五章——Gin参数绑定bind与验证器

    在Gin框架中, bind 用于绑定参数,即将请求参数绑定到结构体中。通过使用 bind ,我们可以方便地将请求参数与结构体字段进行绑定,从而更方便地处理和验证参数。 Gin框架提供了多种绑定方法,包括Query参数绑定、Form参数绑定、JSON参数绑定等。下面分别介绍这些方法的详

    2024年02月07日
    浏览(30)
  • Go学习第十八章——Gin日志与第三方工具Logrus

    1.1 快速入门 在使用Gin框架的过程中,日志是一个重要的组成部分,它可以记录框架和应用程序的运行情况,帮助开发者排查问题和监控应用程序的性能。Gin框架提供了方便的方法来设置和使用日志。 默认日志 Gin框架默认使用的是标准库的log包,将日志输出到控制台。可以通

    2024年02月07日
    浏览(30)
  • G0第21章 :gin框架介绍、RESTful API、Gin渲染

    Web是基于HTTP协议进行交互的应用网络 Web就是通过使用浏览器/APP访问的各种资源 Gin是一个用Go语言编写的web框架。 它是一个类似于 martini但拥有更好性能的API框架, 由于使用了 httprouter,速度提高了近40倍。 如果你是性能和高效的追求者,你会爱上Gin Go世界里最流行的Web框架

    2024年02月06日
    浏览(29)
  • gin渲染篇

    json、结构体、XML、YAML类似于java的properties、ProtoBuf gin支持加载HTML模板, 然后根据模板参数进行配置并返回相应的数据,本质上就是字符串替换 LoadHTMLGlob()方法可以加载模板文件 目录结构: 如果你的目录结构是下面的情况 代码如下: 如果你想进行头尾分离就是下面这种写法了

    2024年01月21日
    浏览(26)
  • Golang学习日志 ━━ 通过将gin-vue-admin项目上传到自己的仓库并且与原版保持更新来学习github操作

    gin-vue-admin是一套国人用golang开发的后台管理系统,本文是从作者早期原文中截取的一部分,后期会以本文为框架进行扩展说明。 官网:https://www.gin-vue-admin.com/ 学习视频:https://www.bilibili.com/video/BV1kv4y1g7nT/?p=6 在gin-vue-admin根目录里打开终端,执行 此时已经把自己的代码推到自

    2024年02月10日
    浏览(31)
  • golang微框架Gin

    Gin是一个golang的微框架,基于httprouter,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 Gin特征 速度快:基于基数树的路由,内存占用小,没有反射,可预测的APi性能 中间件支持 传入的http请求可以有中间件链和最终操作处理,例如:Logger,Aut

    2024年02月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包