【发布时间】:2017-09-21 22:02:19
【问题描述】:
我遵循了Go Writing Web Applications 教程,但无论出于何种原因,我都无法让应用程序提供 CSS 和 JS 服务。如果我在没有 Go 服务器的情况下运行我的静态页面,则页面 CSS 可以正常工作。另一方面,当我运行 Go 服务器时,CSS 不起作用。
这是我的 HTML 的样子:
<link rel="stylesheet" href="../assets/css/bootstrap.min.css">
<link rel="stylesheet" href="../assets/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="../assets/css/custom.css">
然后在body标签下:
<script src="../assets/js/jquery.min.js"></script>
<script src="../assets/js/bootstrap.min.js"></script>
我的文件树如下所示:
go-affect/
├── data
│ └── …
├── static
│ ├── css
│ │ └── …
│ └── js
│ │ └── …
├── tmpl
│ ├── edit.html
│ ├── index.html
│ └── view.html
└── main.go
如何让我的 Go 应用程序提供我需要的 CSS 和 JavaScript?
编辑:
问题已经解决了,这里是主要工作:
func main() {
http.HandleFunc("/view/", makeHandler(viewHandler))
http.HandleFunc("/edit/", makeHandler(editHandler))
http.HandleFunc("/save/", makeHandler(saveHandler))
http.HandleFunc("/index/", makeHandler(indexHandler))
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":8080", nil)
}
这是我正在使用的处理程序的示例:
func indexHandler(w http.ResponseWriter, r *http.Request, title string) {
p := &Page{Title: title}
err := templates.ExecuteTemplate(w, "index.html", p)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
【问题讨论】:
-
为什么html标签中的链接是“/assets/”,而图片中的链接是“/static/”?
-
我能问一下你把你的可执行文件放在哪里吗?我也遇到了同样的问题,不知道怎么写文件路径。
标签: go web-applications server