GO语言前端框架-模板渲染2
比较函数
在gin框架模板渲染中,布尔函数会将任何类型的零值视为假,其余视为真。
常用的比较函数
我们来看一下有哪些常用的比较函数:
我们在模板渲染中是不支持符号(=,<,>···)比较的,所以我们需要使用到比较函数 go eq 如果 arg1 == arg2 则返回真 ne 如果 arg1 != arg2 则返回真 lt 如果 arg1 < arg2 则返回真 le 如果 arg1 <= arg2 则返回真 gt 如果 arg1 > arg2 则返回真 ge 如果 arg1 >= arg2 则返回真
比较函数的基本用法
在使用比较函数时,我们经常与条件判断一起。 html {{if eq a b}} //如果a等于b
条件判断
GO模板中主要有以下几种语法进行条件判断
```go //如果条件判断为真,则渲染T1,否则不展示 {{if pipeline}} T1 {{end}} // 多条件判断 {{if pipeline}} T1 {{else}} T0 {{end}}
{{if pipeline}} T1 {{else if pipeline}} T0 {{end}} 举例
go //如果score大于80分。则展示“优秀”字样 {{if gt .score 80}} 优秀 {{else if gt .score 60}} 及格 {{else}} 不及格 {{end}} ```
range (循环)
Go 的模板语法中使用 range 关键字进行遍历,有以下两种写法,其中pipeline 的值必须是数组、切片、字典或者通道。
gin //写法一 {{range $key,$value := .obj}} {{$value}} {{end}} // 如果 pipeline 的值其长度为 0,不会有任何输出 //写法二 {{$key,$value := .obj}} {{$value}} {{else}} pipeline 的值其长度为 0 {{end}}
当我们在后端传一个数组时,我们需要使用go模板遍历出来,因此需要使用到range关键字
```gin // 后端路由,数据交互 router.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{ "hobby": []string{"唱", "跳", "rap","篮球"}, }) }) // 前端html,将hobby数组遍历 {{range $key,$value := .hobby}}
{{$value}}
{{end}} ```
with
当有多层的变量名的时候,为了方便,我们可以使用with来进行减少代码量和重复的变量名。
gin //路由进行前后端数据交互 user := UserInfo{ Name: "ikun", Gender: "男", Age: 22, } router.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "default/index.html", map[string]interface{}{ "user": user, }) })
当我们没使用with之前需要输出数据时
```gin
{{.user.Name}}
{{.user.Gender}}
{{.user.Age}}
``` 当我们学习gin框架两年半后,学会了with
gin {{with .user}} <h2>姓名:{{.Name}}</h2> <h3>性别:{{.user.Gender}}</h3> <h4>年龄:{{.Age}}</h4> {{end}}
预定义函数
如果感兴趣,我们可以查资料了解一下预定义函数和自定义模板。
本文正在参加技术专题18期-聊聊Go语言框架