10

フレームワークとして同じ _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 のレベルを示すことで簡単に修正できますが、別の、よりクリーンな、別の方法が必要だと感じています。この場合、私の腸の判断ミスがありますか?

4

1 に答える 1

9

テストしていないのでよくわかりませんが、変更についてはどうですか

<link href="css/style.css" rel="stylesheet">

<link href="/css/style.css" rel="stylesheet">

?

于 2013-08-14T09:26:58.390 に答える