【问题标题】:How can I find CSS files using golang Gorilla mux如何使用 golang Gorilla mux 找到 CSS 文件
【发布时间】:2015-03-01 07:22:43
【问题描述】:

我正在使用 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 和图像文件夹? 怎么样?

【问题讨论】:

    标签: go gorilla


    【解决方案1】:

    您可以使用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))
    }
    

    【讨论】:

    • 如何将其添加到我的上述代码中以使其完全适用于我的结构?
    • 感谢您的详细说明。不幸的是,我也无法让它工作。按原样使用上面的代码。是否可以以某种方式调试以查看我的 CSS 文件未加载的原因?
    • 我得到了它与您上面的代码示例一起使用。非常感谢:-)
    • 我对您的代码有疑问。如果我想将我的 index.html 文件、css 和 images 文件夹放在一个子文件夹中,我们称之为 MyLoginPage。我应该在代码中的哪个位置添加该子文件夹,以便我的 Go 程序可以找到文件?
    • 对这段代码的解释会很棒