我正在尝试创建一个完整的堆栈应用程序,但我在模板部分遇到了问题。只要页面是静态的,以下代码就可以了,但是当我开始使用继承函数(例如 {{template}}、{{define}} 或 {{block}})时会返回一个空白页面。main.go :package mainimport ( "fmt" "html/template" "log" "net/http" "github.com/gorilla/mux")func main() { router := mux.NewRouter() router.HandleFunc("/", func(rw http.ResponseWriter, r *http.Request) { fmt.Println("begin") files := []string{ "layout.html", "index.html", } tmpl, err := template.ParseFiles(files...) if err != nil { http.Error(rw, fmt.Sprintf("failed parsing template files | %s", err.Error()), http.StatusInternalServerError) return } if err := tmpl.Execute(rw, nil); err != nil { http.Error(rw, fmt.Sprintf("failed rendering template | %s", err.Error()), http.StatusInternalServerError) return } }).Methods("GET") if err := http.ListenAndServe(fmt.Sprintf(":3000"), router); err != nil { log.Fatalf("failed starting server | %s", err.Error()) }}布局.html{{define "base"}}<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no"> <!-- bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <title></title> </head> <body> <main> {{template "main" .}} </main>索引.html{{template "base" .}}{{ define "main" }} <h2>hello</h2> <p>test</p>{{ end }}我已经从字面上复制了这些示例,但它仍然不起作用。我错过了什么?
1 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
ParseFiles返回参数列表中第一个文件的模板。文件的模板是 {{define}}/{{end}} 块之外的内容。
列表中的第一个文件 layout.html 在 {{define}}/{{end}} 块之外只有空格。
您需要文件 index.html 中的模板。交换文件的顺序以解决问题。
files := []string{
"index.html",
"layout.html",
}
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消