Rumah >pembangunan bahagian belakang >Golang >Masalah menyediakan JavaScript dan fail aset menggunakan Gorilla Mux di Golang

Masalah menyediakan JavaScript dan fail aset menggunakan Gorilla Mux di Golang

王林
王林ke hadapan
2024-02-09 16:12:09948semak imbas

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

Masalah menyediakan JavaScript dan fail aset menggunakan Gorilla Mux di Golang ialah situasi yang mungkin sering dihadapi oleh ramai pembangun apabila menggunakan pustaka ini. Gorilla Mux ialah perpustakaan penghalaan yang popular, tetapi anda mungkin menghadapi beberapa kesukaran apabila berurusan dengan sumber statik. Editor PHP Xiaoxin akan memperkenalkan anda kepada beberapa masalah dan penyelesaian biasa dalam artikel ini untuk membantu anda menggunakan Gorilla Mux dengan lebih baik untuk menyediakan JavaScript dan fail aset dalam projek Golang.

Kandungan soalan

Saya mempunyai sistem fail seperti ini:

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

Dalam fail api.go, saya menyediakan pelayan Gorilla mux saya seperti ini, (Mendapatkan kod daripada Golang Gorilla mux ini, http.FileServer returns 404):

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

fail html:

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

Pelayar hanya boleh melihat html (statik) dan css (gaya), tetapi bukan skrip dan sumber, walaupun pada hakikatnya semuanya sama seperti dua yang pertama. Ralat:

(Golang Gorilla mux dengan http.FileServer mengembalikan 404) Kedua-dua pilihan ini hanya membantu untuk fail html dan css, menukar laluan juga tidak memberikan hasil.

Penyelesaian

Masalah anda disebabkan oleh pengendali "/", yang sepadan dengan "/aset" dan "/skrip" dan diisytiharkan sebelum laluan ini. Lihat di sinicara gorila/mux sepadan dengan laluan

Jika anda menyusun semula susunan laluan, masalah ini akan hilang:

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

Atas ialah kandungan terperinci Masalah menyediakan JavaScript dan fail aset menggunakan Gorilla Mux di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam