如何使用Go语言Gorilla mux查找CSS文件

3

我正在使用Go语言和Gorilla Mux库。

这是我的webserver.go文件。

package main

import (
  "log"
  "net/http"

  "github.com/gorilla/mux"
)

func HomeHandler(rw http.ResponseWriter, r *http.Request) {
  http.ServeFile(rw, r, "index.html")
}

func main() {
  r := mux.NewRouter()
  r.HandleFunc("/", HomeHandler)

  http.Handle("/", r)

  log.Println("Server running on :8080")
  err := http.ListenAndServe(":8080", r)
  if err != nil {
     log.Printf("Error: %s\n", err.Error())
  }
}

在webserver.go文件所在的同一文件夹中,有一个index.html文件。

/ - 这里是index.html

/css - 所有CSS文件

/images - 所有图片、资源文件

我用上面的代码成功加载了index.html文件,但似乎没有加载CSS文件和图片。

在index.html文件中,我有如下内容。

<link rel="stylesheet" type="text/css" href="css/demo.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/animate-custom.css" />

所以它应该能够找到CSS文件,或者我需要确保“Go”可以找到CSS和图像文件夹吗? 如何操作?
1个回答

5
您可以使用 http.FileServer 来独立地为所有静态文件提供服务,而不依赖于 gorilla/mux
package main

import (
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func HomeHandler(rw http.ResponseWriter, r *http.Request) {
    http.ServeFile(rw, r, "index.html")
}

func main() {
    r := mux.NewRouter()

    cssHandler := http.FileServer(http.Dir("./css/"))
    imagesHandler := http.FileServer(http.Dir("./images/"))

    http.Handle("/css/", http.StripPrefix("/css/", cssHandler))
    http.Handle("/images/", http.StripPrefix("/images/", imagesHandler))
    r.HandleFunc("/", HomeHandler)
    http.Handle("/", r)

    log.Println("Server running on :8080")
    log.Fatal(http.ListenAndServe(":8080", nil))
}

我该如何将这段代码添加到我的上面的代码中,以使其与我的结构完全配合? - user1185305
感谢您提供详细的说明。不幸的是,我也无法使其工作。我使用了您上面的代码。是否有可能进行调试以查看为什么我的CSS文件没有加载? - user1185305
我已经使用您上面的代码示例使其正常工作。非常感谢 :-) - user1185305
我有一个关于你的代码的问题。如果我想把我的index.html文件、css和images文件夹放在一个子文件夹里,我们称之为MyLoginPage。那么在代码中,我应该在哪里添加这个子文件夹,以便我的Go程序可以找到这些文件? - user1185305
这段代码的解释会很棒。 - IcanCode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接