Probleme beim Bereitstellen von JavaScript- und Asset-Dateien mit Gorilla Mux in Golang

王林
Freigeben: 2024-02-09 16:12:09
nach vorne
928 Leute haben es durchsucht

在 Golang 中使用 Gorilla Mux 提供 JavaScript 和资产文件时遇到问题

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.

Frageninhalt

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
Nach dem Login kopieren

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")
}
Nach dem Login kopieren

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"
/>
Nach dem Login kopieren

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.

Problemumgehung

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"))))
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage