Я следовал учебнику Go Writing Web Applications, но по какой-то причине у меня возникли проблемы с получением приложения для обслуживания CSS и JS. Если я запускаю свою статическую страницу без сервера Go, CSS страницы работает нормально. С другой стороны, когда я запускаю сервер Go, CSS просто не работает.
Вот как выглядит мой HTML-код:
<link rel="stylesheet" href="../assets/css/bootstrap.min.css">
<link rel="stylesheet" href="../assets/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="../assets/css/custom.css">
затем под тегом body
:
<script src="../assets/js/jquery.min.js"></script>
<script src="../assets/js/bootstrap.min.js"></script>
Мое дерево файлов выглядит так:
go-affect/
├── data
│ └── …
├── static
│ ├── css
│ │ └── …
│ └── js
│ │ └── …
├── tmpl
│ ├── edit.html
│ ├── index.html
│ └── view.html
└── main.go
Как мне заставить мое приложение Go обслуживать нужные мне CSS и JavaScript?
С тех пор проблема была решена, вот рабочая главная:
func main() {
http.HandleFunc("/view/", makeHandler(viewHandler))
http.HandleFunc("/edit/", makeHandler(editHandler))
http.HandleFunc("/save/", makeHandler(saveHandler))
http.HandleFunc("/index/", makeHandler(indexHandler))
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":8080", nil)
}
Вот пример используемых мной обработчиков:
func indexHandler(w http.ResponseWriter, r *http.Request, title string) {
p := &Page{Title: title}
err := templates.ExecuteTemplate(w, "index.html", p)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}