模板渲染
Beego 采用了Go 语言默认的模板引擎;
指定模板
this.TplName = "index.tpl"
默认支持tpl和html, beego.AddTemplateExt 设置其他后缀,
beego.AddTemplateExt("后缀名")
如果不设置该参数,那么默认会到模板目录的 Controller/<方法名>.tpl 查找, 例如上面的方法会找 maincontroller/get.tpl.
数据渲染
c.Data["Website"] = "beego.me"
// 前端获取数据:{{.Website }} 两个换括号中变量名前有个点, 这个点表示当前对象.
设置模板路径
Beego 默认的路径时 view, 可以自己设置 :
// main 函数中设置
beego.SetViewsPath("templates")
// 配置文件中设置
viewspath = "templates"
当然,不需要模板输出,比如我们只写接口, 可以手动关闭模板渲染
// 在配置文件中
autorender = false
// 在main 函数中
beego.BConfig.WebConfig.AutoRender = false
**注意 : **
使用
.来访问当前位置的上下文;使用
$来引用当前模板根级的上下文;
结构体渲染
// 后端
type User struct {
Name string
Age int
Gender string
}
func (this *RegisterControllers) Get() {
this.Data["user"] = &User{Name: "刘备",Age: 56,Gender: "男"}
this.TplName = "example.html"
}
// 前端
<body>
<h1>Example</h1>
<div>
<p>用户姓名 : {{.user.Name}}</p>
<p>用户年龄 : {{.user.Age}}</p>
<p>用户性别 : {{.user.Gender}}</p>
</div>
</body>
数组数据渲染
// 后端
// 数组数据渲染
func (e *ExampleControllers) Get() {
list := [4]string{"北京", "上海", "广州", "深圳"}
e.Data["list"] = &list
e.TplName = "example.html"
}
// 前端
<body>
<div>
{{/*第一种渲染方式*/}}
{{range $k,$v := .list}}
{{$k}}
{{$v}}
{{end}}
<br>
{{/*第二种方式*/}}
{{range .list}}
{{.}}
{{end}}
</div>
</body>
结构体数组渲染
// 结构体数组渲染
type Student struct {
Name string
Age int
Gender string
}
func (e *ExampleControllers) Get() {
example := [3]Student{
{Name: "张三", Age: 22, Gender: "男"},
{Name: "李四", Age: 33, Gender: "女"},
{Name: "王五", Age: 21, Gender: "男"},
}
e.Data["example"] = example
e.TplName = "example.html"
}
// 前端
<div>
{{/*第一种渲染方式*/}}
{{range $v := .example}}
{{$v.Name}}
{{$v.Age}}
{{$v.Gender}}
<br>
{{end}}
<br>
{{/*第二种方式*/}}
{{range .example}}
{{.Name}}
{{.Gender}}
<br>
{{end}}
</div>
映射数据渲染
func (e *ExampleControllers) Get() {
student := map[string]string{
"name": "李四",
"age": "22",
}
e.Data["student"] = student
e.TplName = "example.html"
}
// 前端
{{/*第一种方式*/}}
{{.student.name}}
{{.student.age}}
{{/*第二种方式*/}}
{{range $k,$v := .student}}
{{$k}}
{{$v}}
{{end}}
结构体映射组合渲染
// 结构体数组渲染
type Student struct {
Name string
Age int
Gender string
}
func (e *ExampleControllers) Get() {
student := make(map[int]Student)
student[100] =Student{Name: "张三",Age: 22,Gender: "男"}
student[101] = Student{Name: "李四",Age: 23,Gender: "女"}
student[102] = Student{Name: "王五",Age: 24,Gender: "女"}
e.Data["student"] = student
e.TplName = "example.html"
}
// 前端
{{/*先循环数组, 在获取结构体变量*/}}
{{range $v := .student}}
{{$v.Name}}
{{end}}
切片数据渲染
类似数组数据渲染
// 切片数据渲染
func (e *ExampleControllers) Get() {
city := []string{"北京", "上海", "广州"}
e.Data["city"] = city
e.TplName = "example.html"
}
// 前端
{{/*只有一个值得时候默认是切片的元素, 而不是角标*/}}
{{range $v := .city}}
{{$v}}
{{end}}
指定静态文件
Beego 默认注册了 static 目录为静态处理的目录, 如果更换 static的目录, 在 main函数中增加 beego.SetStaticPath("/static") = "front", 路径对应文件夹名. 设置多个静态文件处理目录, 在main函数中添加
beego.SetStaticPath("/static1", "static1")
beego.SetStaticPath("/static2", "static2")
/ static 是你的路径, 然后会找个路径对应的文件夹名, 一般起名路径后面的名称和文件夹名一致即可;