Masalah menyediakan JavaScript dan fail aset menggunakan Gorilla Mux di Golang

王林
Lepaskan: 2024-02-09 16:12:09
ke hadapan
928 orang telah melayarinya

在 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
Salin selepas log masuk

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")
}
Salin selepas log masuk

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"
/>
Salin selepas log masuk

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"))))
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan