フレームワークとして同じ _base.html を使用して複数のページにコンテンツを提供するために、golang の「html/template」パッケージを使用しています。複数の html ファイル (_base.html とコンテンツ ファイル) をマージして 1 つにします。
func main() {
http.HandleFunc("/", indexHandler)
http.HandleFunc("/blog/", blogHandler)
http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("http/css"))))
http.ListenAndServe(":1337", nil)
}
func indexHandler(w http.ResponseWriter, r *http.Request) {
index := template.Must(template.ParseFiles(
"http/html/_base.html",
"http/html/index.html",
))
index.Execute(w, nil)
}
func blogHandler(w http.ResponseWriter, r *http.Request) {
blog := template.Must(template.ParseFiles(
"http/html/_base.html",
"http/html/blog.html",
))
blog.Execute(w, nil)
}
_base.html の .css への html リンク タグが次を使用して正しいディレクトリを指しているため、Web サーバーのルートでこれを行うと、css は問題なくレンダリングされます。
<link href="css/style.css" rel="stylesheet">
ただし、/ から /blog/ に移動すると、CSS のレベルが下がり (またはレベルが上がりましたが、見たいと思います)、css href が突然 /blog/css/style.css を指し、したがって、レンダリングされません。
これは、_base.html とマージするすべてのコンテンツ ファイルの css のレベルを示すことで簡単に修正できますが、別の、よりクリーンな、別の方法が必要だと感じています。この場合、私の腸の判断ミスがありますか?