Go语言Web开发
Go语言提供了html/template包来支持模板渲染。Go提供的html/template包对HTML模板提供了丰富的模板语言,主要用于Web应用程序。
模板中的变量
模板中的变量通过{{.}} 来访问。
{{.}} 称为管道和root。
在模板文件内,{{.}}代表当前变量,即在非循环体内,{{.}}就代表传入的那个变量。
‘模板中使用{{/* comment */}} 来进行注释’
Golang渲染template的时候,可以在模板文件中读取变量内的值并渲染到模板里。有两个常用的传入类型。
- 一是struct,在模板内可以读取该struct的内容。
- 二是map[string]interface{},在模板内可以使用key来进行渲染。
举个例子:
定义了有一个结构体 user
type user struct {
username,userid string
age int
}
u1:=user{
username: "goweb",
userid: "1024",
age: 18,
}
}
在模板中要获取数据----
{{.}}{{.username}}{{.userid}}{{.age}}
在web页面中显示的数据:
{goweb 1024 18}
假如定义了一个map
m := make(map[string]interface{})
m["name"] = "小花"
m["age"] = 18
//获取数据
//{{.}}{{.name}}{{.age}}
在web页面中显示的数据:
{小花 18}
在模板中还可以定义变量,变量初始化之后就可以在go提供的模板文件中调用
{{$MyUserName:="七七"}}
{{$MyUserName}}
在web页面上显示
七七
模板中的逻辑判断
golang模板支持if判断,
格式如下:
{{if .condition}}
{{end}}
当.condition是bool类型时,值为true表示执行。
当.condition是string类型时,值非空表示执行。此模板也支持if…else if嵌套
{{if .condition}}
{{else if .condition}}
{{end}}
常用的内置函数
例如:
m := make(map[string]interface{})
m["name"] = "小花"
m["age"] = 18
{{if eq .name .m}}
ok:账号名一致
{{else if ne .name .m }}
err:账号名不一致
{{end}}
循环遍历
Golang的template支持range循环来遍历map、slice中的内容,语法格式如下所示。
//在这个range循环内,遍历数据通过\$index和\$value来实现
{{range $index,$value:=.slice}}
{{end}}
//这种方式无法访问到$index和$key的值,需要通过{{.}}来访问对应的$value。这种情况下,在循环体内,外部变量需要使用{{$.}}来访问。
{{range .slice}}
{{end}}
这感觉就像 theamleaf,treemarker,JSTL
这要手动写起来就很麻烦,不如我们来看几个开源的goweb框架
根据框架进行开发,省时省力呀.后去会去瞅一下这些框架;