jjnoob

tizi-beego-11-视图

2019-07-29
jjnoob

参考

模板入门

beego 的视图(view)模板引擎是基于Go原生的模板库(html/template)进行开发的,因此在开始编写view模板代码之前需要先学习下Go内置模板引擎的语法

模版引擎使用流程:

  1. 编写模版代码
  2. 导入包
  3. 加载模版代码
  4. 根据模版参数渲染模版

(1) 编写模板代码

路径:views/demo.tpl

模板代码跳过, 博客上显示不出来.

(2) 导入包

import "text/template"

本文主要以text/template为例,如果要使用html/template直接替换包名就行.

(3) 加载模板代码

// 加载模版代码,并且创建template对象t
// template.ParseGlob 函数加载views目录下的所有tpl为后缀的模版文件
// template.Must函数主要用于检测加载的模版有没有错误,有错误输出panic错误,并且结束程序。
t := template.Must(template.ParseGlob("./views/*.tpl"))

(4) 根据模版参数渲染模版

定义模版参数:

//这里定义一个struct类型的模版参数,实际上模版可以是任意类型数据
type GameStatus struct {
    Name string
    IsWin bool
}

因为只能传入一个模版参数,如果想传入多个模版参数,可以使用map或者struct类型。

初始化模板参数

这里初始化一个参数数组,下面用于循环渲染模板。

var userStatus = []GameStatus{
    {"大春", true},
    {"NiuBee", false},
    {"球球", true},
}

渲染模板

下面是根据userStatus 数组循环渲染模板:

for _, u := range userStatus {
    //根据参数u, 渲染命名为demo的模板,并且将渲染结果打印到标准输出
    err := t.ExecuteTemplate(os.Stdout, "demo", u)
    if err != nil {
        log.Println("executing template:", err)
    }
}

输出结果:

昵称: 大春,
恭喜,大吉大利,今晚吃鸡!
昵称: NiuBee,
遗憾,鸡被吃光了!
昵称: 球球,
恭喜,大吉大利,今晚吃鸡!

根据不同的模版参数,渲染模版输出不同的页面内容,就是模版引擎的主要工作,目的是简化html模版输出工作。


二. 模板函数

(1) 内置模板函数

  1. beego内置了模板函数
  2. Go内置模板引擎也自带了一些模板函数

(2) 自定义模板函数

三. 静态资源处理

beego默认静态资源都是保存在static目录,访问静态资源的url是 http://域名/static/资源路径名

下面例子介绍如何自定义静态资源路径访问url.

通过beego.SetStaticPath函数设置静态资源路由和目录:

// 通过 /images/资源路径  可以访问static/images目录的内容
// 例: /images/user/1.jpg 实际访问的是 static/images/user/1.jpg 
beego.SetStaticPath("/images","static/images")

// 通过 /css/资源路径  可以访问static/css目录的内容
beego.SetStaticPath("/css","static/css")

// 通过 /js/资源路径  可以访问static/js目录的内容
beego.SetStaticPath("/js","static/js")

Similar Posts

Content