AI智能
改变未来

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 mainimport (\"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\"))
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Go中模板&模板引擎的使用