一架梯子,一头程序猿,仰望星空!

beego 模板入门教程


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

提示: 如果还不了解Go内置模板引擎(html/template)的模板语法,可以点击这里学习下Go内置模板引擎教程

beego模板,默认支持 tpl 和 html 的后缀名。

1.基础例子

下面看个视图模板的例子。
模板文件: views/user/index.html

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

下面看控制器如何渲染这个模板文件。

// 处理get请求
func (this *UserController) Get() {
    // 初始化,模板渲染需要的数据
	user := &User{1, "tizi365", time.Now()}
	
	// 通过Data, 将参数传入模板,  Data是map类型支持任意类型数据
	this.Data["user"] = user
	
	// 设置我们要渲染的模板路径, 也就是views目录下面的相对路径
	// 如果你不设置TplName,那么beego就按照 <控制器名字>/<方法名>.tpl 这种格式去查找模板文件。
	this.TplName = "user/index.html"
	
	// 如果你关闭了自动渲染,则需要手动调用渲染函数, beego 默认是开启自动渲染的
	// this.Render()
}

提示:在app.conf配置文件中配置AutoRender参数为true或者false,表示是否开启自动渲染。

2.模板标签冲突

默认情况,模板引擎使用 {{ 模板表达式 }} 作为模板标签,如果我们前端开发使用的是Vue、angular之类的框架,这些前端框架也是使用 {{ 模板表达式 }} 作为模板标签,这样就造成冲突了。

我们可以通过修改Go模板引擎的默认标签解决模板标签冲突问题。

例子:

// 修改Go的模板标签
web.TemplateLeft = "<<<"
web.TemplateRight = ">>>"

修改后的模板表达式:

<<<.user.username>>>

你可以改成你喜欢的样式。