做彩票网站网址,福州公司网站开发方案,专业手机网站制作公司,有做教育行业的招聘网站吗模版与渲染 一. 返回二. 模版2.1 基础模版2.2 同名模版2.3 模版继承2.4 模版语法 一. 返回
如果只是想返回数据#xff0c;可以使用以下函数#xff1a;
func (c *Context) JSON(code int, obj any)
func (c *Context) JSONP(code int, obj any)
func (c *Context) String(… 模版与渲染 一. 返回二. 模版2.1 基础模版2.2 同名模版2.3 模版继承2.4 模版语法 一. 返回
如果只是想返回数据可以使用以下函数
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
二. 模版
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 langen
head
titleDocument/title
/head
bodyh1这是一个APP1模板/h1h3{{.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)
}2.3 模版继承
仅需要在模版里使用{{template common/nav.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.Sprintprintf
即 fmt.Sprintfprintln
即 fmt.Sprintlnhtml
返回与其参数的文本表示形式等效的转义 HTML。
这个函数在 html/template 中不可用。urlquery
以适合嵌入到网址查询中的形式返回其参数的文本表示的转义值。
这个函数在 html/template 中不可用。js
返回与其参数的文本表示形式等效的转义 JavaScript。call
执行结果是调用第一个参数的返回值该参数必须是函数类型其余参数作为调用该函
数的参数
如call .X.Y 1 2等价于 go 语言里的 dot.X.Y(1, 2)
其中 Y 是函数类型的字段或者字典的值或者其他类似情况
call 的第一个参数的执行结果必须是函数类型的值和预定义函数如 print 明显不同
该函数类型值必须有 1 到 2 个返回值如果有 2 个则后一个必须是 error 接口类型
如果有 2 个返回值的方法返回的 error 非 nil模板执行会中断并返回给调用模板执行者
该错误eg:
{{len .title}}
{{index .hobby 2}}