go / golang服务器中的静态CSS文件

时间:2018-09-21 21:08:54

标签: html css go

我如何在go(go版本为go1.9.1 linux / amd64)中使用静态CSS文件?

我当前的代码不起作用(它确实显示了网站,但看不到CSS)。这是我尝试通过go handler使用标准文件服务。当我进入页面源代码并单击指向css / styles.css的链接时,它似乎可见并正确重定向(在正确的URL下)。我想我不了解某些解析步骤。

package main

import (
    "html/template"
    "net/http"
    "fmt"
)

const (
    PORT = ":3000"
    HOST = "localhost"
)

func handleBooks(w http.ResponseWriter, r *http.Request) {
    tmpl := template.Must(template.ParseFiles("books.html"))
    tmpl.Execute(w)
}

func main() {
    fs := http.FileServer(http.Dir("css"))
    http.Handle("/css/", http.StripPrefix("/css/", fs))

    http.HandleFunc("/books", handleBooks)
    fmt.Println("Listening on " + HOST + PORT)
    http.ListenAndServe(PORT, nil)
}

style.css

.body {
    margin-left: auto;
    margin-right: auto;
    width: 1000px;
}

books.html

<html>
<head>
<title>Books</title>
<link rel="stylesheet" href="css/style.css" type="text/css">
</head>
<body>
<ul>
    books
        <li>book1</li>
        <li>book2</li>
</ul>
</body>
</html>

我的目录树:

  
      
  • src:      
        
    • books.html
    •   
    • main.go
    •   
    • css      
          
      • style.css
      •   
    •   
  •   

1 个答案:

答案 0 :(得分:0)

问题似乎出在这部分:

fs := http.FileServer(http.Dir("css"))
http.Handle("/css/", http.StripPrefix("/css/", fs)) 

清除缓存后,结果发现http.Handle第一个参数中的斜杠是必需的。非常感谢mkopriva,没有您,我就不会检查它。