Go语言标准库之http/template
模板引擎的使用
Go语言模板引擎的使用可以分为三部分:定义模板文件、解析模板文件和模板渲染.
定义模板文件
其中,定义模板文件时需要我们按照相关语法规则去编写,后文会详细介绍。
解析模板文件
上面定义好了模板文件之后,可以使用下面的常用方法去解析模板文件,得到模板对象:
func (t *Template) Parse(src string) (*Template, error)
func ParseFiles(filenames ...string) (*Template, error)
func ParseGlob(pattern string) (*Template, error)
当然,你也可以使用func New(name string) *Template
函数创建一个名为name
的模板,然后对其调用上面的方法去解析模板字符串或模板文件。
模板渲染
渲染模板简单来说就是使用数据去填充模板,当然实际上可能会复杂很多。
func (t *Template) Execute(wr io.Writer, data interface{}) error
func (t *Template) ExecuteTemplate(wr io.Writer, name string, data interface{}) error
演示实例
package main
import (
"fmt"
"html/template"
"net/http"
)
// 遇事不决 , 注释先行
func sayHello(w http.ResponseWriter , r *http.Request){
// 定义模板 .tmpl
// 2.解析模板
// 请勿刻舟求剑
t , err := template.ParseFiles("./hello.tmpl")
if err != nil{
fmt.Println("template Parse failed , err : %v\n",err)
return
}
// 3.渲染模板
name := "靓仔"
err = t.Execute( w , name )
if err != nil{
fmt.Println("template Execute failed , err : %v\n",err)
}
}
func main(){
http.HandleFunc("/hello",sayHello)
err := http.ListenAndServe("127.0.0.1:9000",nil)
if err != nil{
fmt.Printf("HTTP Serve failed , err : %v\n",err)
return
}
}
上课笔记
- 定义模板:编写
.tmpl
为后缀的HTML文件,模板中可以利用{{.}}
来替换传入的参数 - 解析模板:
template.ParseFiles("./hello.tmpl")
,运行时在终端打开才能识别当前路径 - 注意:解析模板有且只有返回值1个或2个,第一个是模板对象,第二个是
err
; - 渲染模板:实则就是把参数传入到模板内