在Web开发中,模板引擎是一个非常重要的工具,它可以让我们轻松地生成HTML、XML和其他文本格式的输出。在Go语言中,html/template和text/template包是两个常用的模板引擎。
html/template包html/template包是Go语言标准库中提供的一个HTML模板引擎。它的主要特点是支持自动转义,可以防止跨站点脚本攻击。
html/template包使用{{}}标记来标记模板中的动作。下面是一些常用的动作:
下面是一个使用html/template包的示例,它可以根据不同的URL参数返回不同的HTML页面。
package main
import (
"html/template"
"net/http"
)
type PageData struct {
Title string
Body string
}
func handlerFunc(w http.ResponseWriter, r *http.Request) {
var data PageData
switch r.URL.Path {
case "/":
data = PageData{
Title: "Home",
Body: "<h1>Welcome to our website!</h1>",
}
case "/about":
data = PageData{
Title: "About",
Body: "<h1>About us</h1><p>We are a team of web developers.</p>",
}
default:
data = PageData{
Title: "Not Found",
Body: "<h1>404 Page Not Found</h1>",
}
}
tmpl, err := template.ParseFiles("template.html")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
err = tmpl.Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", handlerFunc)
mux.HandleFunc("/about", handlerFunc)
http.ListenAndServe(":8080", mux)
}在上面的示例中,我们定义了一个PageData结构体,用于存储页面数据。然后,我们在handlerFunc函数中根据不同的URL参数设置不同的页面数据。最后,我们使用template.ParseFiles()方法解析模板文件,并使用template.Execute()方法将数据应用到模板中。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。