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