Go中模板&模板引擎的使用

模板引擎通过将数据和模板组合在一起生成最终的HTML,而处理器则负责调用模板引擎并将引擎生成的HTML返回给客户端。

处理器调用Go模板引擎的流程:

处理器首先调用模板引擎,接着以模板文件列表的方式向模板引擎传入一个或多个模板,然后再传入模板需要用到的动态数据;模板引擎在接收到这些参数之后会生成出相应的HTML,并将这些文件写入到ResponseWriter里面,然后由ResponseWriter将HTTP响应返回给客户端。

在这里插入图片描述

对模板进行语法分析:

ParseFiles函数在执行完毕之后将返回一个Template类型的已分析模板和一个错误作为结果
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Go Web Programming</title>
</head>
<body>
{{}}
</body>
</html>
package main
import (
"net/http"
"html/template"
)
func process(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("tmpl.html")
调用Execute方法,将数据应用(apply)到模板里面——在这个例子中,数据就是字符串"Hello World!":
t.Execute(w, "Hello World!")
}
func main() {
server := http.Server{
Addr:"127.0.0.1:8080",
}

这相当于创建一个新模板,然后调用它的ParseFiles方法:

t := template.New("tmpl.html")
t, _ := t.ParseFiles("tmpl.html")
ParseGlob会对匹配给定模式的所有文件进行语法分析
t, _ := template.ParseFiles("tmpl.html")
和语句
t, _ := template.ParseGlob("*.html")
程序也可以直接对字符串形式的模板进行语法分析
tmpl := `<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Go Web Programming</title>
</head>
<body>
{{}}
</body>
</html>
t, _ = t.Parse(tmpl)
t.Execute(w, "Hello World!")
执行模板
在只有一个模板时调用模板的Execute方法,
t, _ := template.ParseFiles("tmpl.html")
t.Execute(w, "Hello World!")
但如果模板不止一个,那么当对模板集合调用Execute方法的时候,Execute方法只会执行模板集合中的第一个模板。如果想要执行的不是模板集合中的第一个模板而是其他模板,就需要使用Execute Template方法。
t, _ := template.ParseFiles("t1.html", "t2.html")
t.ExecuteTemplate(w, "t2.html", "Hello World!")
Go也提供了另外一种机制,专门用于处理分析模板时出现的错误:
t := template.Must(template.ParseFiles("tmpl.html"))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值