Heim >Backend-Entwicklung >Golang >Probleme beim Bereitstellen von JavaScript- und Asset-Dateien mit Gorilla Mux in Golang
Probleme bei der Bereitstellung von JavaScript- und Asset-Dateien mit Gorilla Mux in Golang sind eine Situation, auf die viele Entwickler bei der Verwendung dieser Bibliothek häufig stoßen können. Gorilla Mux ist eine beliebte Routing-Bibliothek, beim Umgang mit statischen Ressourcen können jedoch einige Schwierigkeiten auftreten. Der PHP-Editor Xiaoxin stellt Ihnen in diesem Artikel einige häufige Probleme und Lösungen vor, damit Sie Gorilla Mux besser nutzen können, um JavaScript- und Asset-Dateien in Golang-Projekten bereitzustellen.
Ich habe ein Dateisystem wie dieses:
-- api -> api.go -- styles -> style1.css -> style2.css -> ... -- scripts -> script1.js -> script2.js -> ... -- static -> page1.html -> page2.html -> ... -- assets -> image1.png -> image2.png -> ... -- main.go
In der api.go-Datei habe ich meinen Gorilla-Mux-Server wie folgt eingerichtet (Code wird von diesem Golang-Gorilla-Mux abgerufen, http.FileServer gibt 404 zurück):
func (api *APIServer) Run() { router := mux.NewRouter() router.PathPrefix("/styles/").Handler(http.StripPrefix("/styles/", http.FileServer(http.Dir("styles")))) router.PathPrefix("/").Handler(http.StripPrefix("/", http.FileServer(http.Dir("static")))) router.PathPrefix("/scripts/").Handler(http.StripPrefix("/scripts/", http.FileServer(http.Dir("scripts")))) router.PathPrefix("/assets/").Handler(http.StripPrefix("/assets/", http.FileServer(http.Dir("assets")))) if err := http.ListenAndServe(api.listenAddr, router); err != nil { log.Printf("error starting server %s", err.Error()) } fmt.Println("server start running") }
html-Datei:
<link rel="stylesheet" type="text/css" href="styles\login.css" /> <script src="scripts\login.js"></script> <img id="img-show" src="assets\bin.png" alt="" width="25px" />
Der Browser kann nur HTML (statisch) und CSS (Stile) sehen, nicht jedoch Skripte und Ressourcen, obwohl alles wie bei den ersten beiden ist. Fehler:
(Golang Gorilla Mux mit http.FileServer gibt 404 zurück) Diese beiden Optionen helfen nur für HTML- und CSS-Dateien, eine Änderung des Pfads führte ebenfalls zu keinen Ergebnissen.
Ihr Problem wird durch den „/“-Handler verursacht, der mit „/assets“ und „/scripts“ übereinstimmt und vor diesen Routen deklariert wird. Sehen Sie hierwie Gorilla/Mux Routen abgleicht
Wenn Sie die Routenreihenfolge ändern, verschwindet dieses Problem:
router.PathPrefix("/styles/").Handler(http.StripPrefix("/styles/", http.FileServer(http.Dir("styles")))) router.PathPrefix("/scripts/").Handler(http.StripPrefix("/scripts/", http.FileServer(http.Dir("scripts")))) router.PathPrefix("/assets/").Handler(http.StripPrefix("/assets/", http.FileServer(http.Dir("assets")))) router.PathPrefix("/").Handler(http.StripPrefix("/", http.FileServer(http.Dir("static"))))
Das obige ist der detaillierte Inhalt vonProbleme beim Bereitstellen von JavaScript- und Asset-Dateien mit Gorilla Mux in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!