2016-03-09 10 views
6

ho messa a punto di un percorso in server.js nel pacchetto main nella directory principale del progettocarico e css in Golang

http.HandleFunc("/",route.IndexHandler)

Il IndexHandler è implementato in pacchetto route come questo:

func IndexHandler(w http.ResponseWriter, r *http.Request) { 
    data:=struct{ 
     Name string 
    }{ 
     "My name", 
    } 
    util.RenderTemplate(w, "index", data) 
} 

Il La funzione RenderTemplate è implementata nel pacchetto util in questo modo:

func RenderTemplate(w http.ResponseWriter, tmpl string, data interface{}) { 
    cwd, _ := os.Getwd() 
    t, err := template.ParseFiles(filepath.Join(cwd, "./view/" + tmpl + ".html")) 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
     return 
    } 
    err = t.Execute(w, data) 
    if err != nil { 
     http.Error(w, err.Error(), http.StatusInternalServerError) 
    } 
} 

struttura delle directory in progetto come questo:

/ 
/public/css 
/public/images 
/public/js 
/route 
/view 

index.html vista si trova nella cartella view, router è nella cartella route

In index.html ho includono risorse come questi:

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

<img src="../public/images/img_landing_page_mac.png">

Se richiesto il percorso appropriato, index.html viene ancora visualizzato, ma le immagini e il foglio di stile non vengono caricati. Come posso fare per includerli nel motore di template html di Golang?

risposta

7

È necessario chiedere esplicitamente al server di servire file statici.

Vedi http.FileServer

Nel tuo caso registrare un altro gestore.

http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("public")))) 
+0

E 'completamente funzionato! Grazie mille! – necroface

2

Come Aruna detto, registrare un manico server di file statico

http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("public")))) 

e di utilizzare i file nel formato HTML, è sufficiente

<img src="/public/images/img_landing_page_mac.png">