2016-03-09 17 views
6

I konfiguracja trasy w server.js w pakiecie main w katalogu głównym projektuobciążenia i css w Golang

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

IndexHandler jest zaimplementowana w pakiecie route tak:

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

Funkcja RenderTemplate jest zaimplementowana w pakiecie util w następujący sposób:

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

Struktura katalogów w projekcie tak:

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

index.html View znajduje się w folderze view, router jest w folderze route

W index.html I obejmują środki, takie jak:

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

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

Na żądanie odpowiedniej ścieżki, index.html jest nadal renderowany, ale obrazy i arkusz stylów nie są ładowane. Jak mogę zrobić, aby uwzględnić je w silniku szablonów html Golanga?

Odpowiedz

7

Musisz jawnie poprosić serwer o udostępnienie plików statycznych.

Zobacz http.FileServer

W twoim przypadku zarejestrować inną obsługi.

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

To całkowicie działa! Dziękuję Ci bardzo! – necroface

2

jak Aruna powiedział, zarejestruj uchwyt serwera plików static

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

I korzystać z plików w formacie HTML, po prostu

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