Heim >Backend-Entwicklung >Golang >Probleme beim Bereitstellen von JavaScript- und Asset-Dateien mit Gorilla Mux in Golang

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

王林
王林nach vorne
2024-02-09 16:12:09950Durchsuche

在 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

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.

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen