Używam pakietu "html/template" firmy golang do udostępniania treści na wielu stronach przy użyciu tego samego _base.html jako frameworka. Łączę wiele plików html (_base.html i plik treści), aby służyć jako jeden.Szablon Golang obsługujący css na różnych poziomach katalogów
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)
}
Robi tak na korzeniu mojego serwera WWW mój css czyni dobrze, ponieważ tag HTML Link do mojego .css w _base.html punktów w prawo za pomocą katalogu:
<link href="css/style.css" rel="stylesheet">
jednak gdy Przechodzę z/na/blog/moje css poszło o jeden poziom niżej (lub podniosłem poziom wyżej, jakkolwiek chciałbyś go zobaczyć), więc css href nagle wskazuje na /blog/css/style.css, a tym samym nie będzie renderować.
Można to łatwo ustalić podając poziom css we wszystkich plikach treści scalanych z _base.html, jednak uważam, że musi istnieć inny, czyściejszy, inny sposób. Czy w tym przypadku jest moje złe nastawienie?
Skarbie, jestem taki n00b, a ty jesteś bardzo pomocny, proszę pana. Powinienem wiedzieć, ale zapomniałem. Dziękuję bardzo – Dani