2016-03-09 2 views
6
установка

I маршрут в server.js в пакете main в корневой директории проектаЗагрузка изображения и CSS в Golang

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

IndexHandler реализован в пакете route так:

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

RenderTemplate функция реализована в пакете util следующим образом:

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

Структура каталогов в проекте, как это:

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

index.html вид находится в папке view, маршрутизатор находится в папке route

В index.html включает ресурсы, как эти:

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

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

При запросе соответствующего пути index.html по-прежнему отображается, но изображения и таблицы стилей не загружаются. Как я могу сделать, чтобы включить их в движок шаблонов html Golang?

ответ

7

Необходимо, чтобы ваш сервер обслуживал статические файлы.

См http.FileServer

В вашем случае регистрации другого обработчика.

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

Он полностью работал! Большое спасибо! – necroface

2

Как Аруна сказал, зарегистрировать сервер дескриптор статического файла

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

и использовать файлы в формате HTML, просто

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