2013-08-14 9 views
6

Utilizzo il pacchetto "html/template" di golang per pubblicare contenuti su più pagine utilizzando lo stesso _base.html come framework. Unisco più file html (_base.html e il file di contenuto) per fungere da singolo.Modello Golang che serve css su diversi livelli di directory

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) 
} 

questo modo sulla radice del mio webserver mia css rende bene, perché il collegamento tag HTML al mio css in punti _base.html alla directory giusta utilizzando:

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

tuttavia quando Navigando da/a/blog/il mio css è andato a un livello basso (o ho raggiunto un livello superiore, comunque ti piacerebbe vederlo) e così il css href punta improvvisamente a /blog/css/style.css e quindi non renderà.

Questo può essere facilmente risolto indicando il livello del css in ogni file di contenuto unisco con _base.html, tuttavia sento che ci deve essere un altro, più pulito, modo diverso. C'è o il mio istinto giudica male in questo caso?

risposta

5

Non hai testato, quindi non sono molto sicuro, ma per quanto riguarda la modifica

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

a

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

?

+0

Dannazione, sono un tale n00b, e tu sei molto utile signore. Avrei dovuto saperlo, ma ho dimenticato. Grazie mille – Dani

Problemi correlati