我正在嘗試創建一個完整的堆棧應用程序,但我在模板部分遇到了問題。只要頁面是靜態的,以下代碼就可以了,但是當我開始使用繼承函數(例如 {{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 關注
- 116 瀏覽
添加回答
舉報
0/150
提交
取消