Go语言WEB开发[html/template包]

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}}

常用的内置函数

Go语言WEB开发[html/template包]_第1张图片
例如:

	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框架

Go语言WEB开发[html/template包]_第2张图片

根据框架进行开发,省时省力呀.后去会去瞅一下这些框架;

你可能感兴趣的:(前端,golang,html)