我如何在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
答案 0 :(得分:0)
问题似乎出在这部分:
fs := http.FileServer(http.Dir("css"))
http.Handle("/css/", http.StripPrefix("/css/", fs))
清除缓存后,结果发现http.Handle第一个参数中的斜杠是必需的。非常感谢mkopriva,没有您,我就不会检查它。