我正在使用golang的“html / template”软件包,使用相同的_base.html作为框架在多个页面上提供内容。我将多个html文件(_base.html和内容文件)合并为一个。
func main() {
http.HandleFunc("/", indexHandler)
http.HandleFunc("/blog/", blogHandler)
http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("http/css"))))
http.ListenAndServe(":1337", nil)
}
func indexHandler(w http.ResponseWriter, r *http.Request) {
index := template.Must(template.ParseFiles(
"http/html/_base.html",
"http/html/index.html",
))
index.Execute(w, nil)
}
func blogHandler(w http.ResponseWriter, r *http.Request) {
blog := template.Must(template.ParseFiles(
"http/html/_base.html",
"http/html/blog.html",
))
blog.Execute(w, nil)
}
在我的网络服务器的根目录上执行此操作我的css渲染得很好,因为_base.html中我的.css的html链接标记使用以下命令指向正确的目录:
<link href="css/style.css" rel="stylesheet">
然而,当我从/ to / blog /导航时,我的css降低了一级(或者我升级了,但是你想看到它)所以css href突然指向/ blog / css / style .css因此它不会呈现。
这可以很容易地修复,说明我与_base.html合并的每个内容文件中的css级别,但是我觉得必须有另一种更清洁,不同的方式。在这种情况下,我的直觉是否存在误判?
答案 0 :(得分:8)
没有测试过,所以我不太确定,但是改变呢
<link href="css/style.css" rel="stylesheet">
到
<link href="/css/style.css" rel="stylesheet">