介绍MVC之视图viewer。

1. 简单的模板应用

beego 的视图(view)模板引擎是基于Go原生的模板库(html/template)进行开发的。

用户通过在 Controller 的对应方法中设置相应的模板名称,beego 会自动的在 viewpath 目录下查询该文件并渲染,例如下面的设置,beego 会在 view/admin 下面找 add.tpl 文件进行渲染:

func (this *RegController) Get(){
    this.TplName = "admin/add.tpl"
}

下面举个例子:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>用户个人信息:</h1>
        <p>
            {{ if .user}}
            用户名: {{.user.Username}} <br/>
            注册时间: {{.user.InitTime}}
            {{else}}
            用户不存在!
            {{end}}
        </p>
    </body>
</html>

在控制器中写:

type User struct {
    Id int
    Username string
    InitTime time.Time
}

func (this *RegController) Get(){
    user:=&User{1,"ming",time.Now()}
    this.Data["user"]=user
    this.TplName="index.html"
}

网页输出如下:

模板的参数依靠Data这个map传递,如果我们改为this.Data["users"]那么就将输出:不存在。

2. 模板函数

户还可以自定义模板函数:

func newfunc(in string)(out string){
    out=in+"- 我是新函数"
    return
}

beego.AddFuncMap("newFunction",newfunc)

然后将模板改为:

{{.title | newFunction}}

3. 静态资源处理

除了html模板之外,往往还存在js/css/jpg之类的静态资源文件,beego默认静态资源都是保存在static目录,访问静态资源的url是 http://域名/static/资源路径名

比如如果我们在/static/img下面放了一张cat.jpg,那么我们访问localhost:8080/static/img/cat.jpg就能出现这张图片。

然而URL这样会变得很冗长,也不清晰。我们我们需要通过beego.SetStaticPath函数设置静态资源路由和目录。

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