chris-orz

模板渲染

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>用户姓名&nbsp;:&nbsp;{{.user.Name}}</p>
    <p>用户年龄&nbsp;:&nbsp;{{.user.Age}}</p>
    <p>用户性别&nbsp;:&nbsp;{{.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 是你的路径, 然后会找个路径对应的文件夹名, 一般起名路径后面的名称和文件夹名一致即可;

获取请求数据

分类:

技术点:

相关文章: