Jak serwować CSS i JS W Go
Śledziłem Go Pisanie aplikacji internetowych tutorial, ale z jakiegokolwiek powodu mam problem z uzyskaniem aplikacji do obsługi CSS i JS. Jeśli uruchamiam moją statyczną stronę bez serwera Go, CSS strony działa dobrze. Kiedy uruchamiam Serwer Go z drugiej strony CSS po prostu nie działa.
Oto jak wygląda mój 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">
Następnie pod tagiem body
:
<script src="../assets/js/jquery.min.js"></script>
<script src="../assets/js/bootstrap.min.js"></script>
Moje drzewo plików wygląda tak:
go-affect/
├── data
│ └── …
├── static
│ ├── css
│ │ └── …
│ └── js
│ │ └── …
├── tmpl
│ ├── edit.html
│ ├── index.html
│ └── view.html
└── main.go
Jak mogę dostać moją aplikację Go do podać CSS i JavaScript, których potrzebuję?
EDIT:
Problem został rozwiązany, oto główna praca:
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)
}
Oto przykład obsługi, której używam:
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)
}
}
2 answers
http.Handle("/", http.FileServer(http.Dir("css/")))
Poda Twój css
katalog pod /
. Oczywiście możesz obsługiwać dowolny katalog na dowolnej ścieżce, którą wybierzesz.
Prawdopodobnie chcesz się upewnić, że statyczna ścieżka nie jest na drodze innych ścieżek i użyj czegoś takiego.
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
Umieszczenie zarówno js
jak i css
w katalogu static
w Twoim projekcie. To będzie im służyć w domain.com/static/css/filename.css
i domain.com/static/js/filename.js
Metoda StripPrefix
usuwa prefiks, więc nie próbuje szukać np. w static
katalog static/css/filename.css
, którego oczywiście nie znajdzie. Szukałby css/filename.css
w katalogu static
, co byłoby poprawne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-23 17:05:16
Dodałem link do katalogu css moich serwerów apache do sekcji head moich plików szablonów. Przechowuję pliki szablonu i danych używane przez dowolną aplikację go w katalogu, z którego działa aplikacja go. W tym przypadku cgi-bin.
Szablon wykorzystuje css z katalogu mojego serwera apache assets/css
:
<link rel="stylesheet" href="/assets/css/main.css" />
Go apps run from my cgi-bin dir
Arkusze Sytle są serwowane z mojego katalogu Apache assets / css
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-19 06:02:15