我正在使用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级别,但是我觉得必须有另一种更清洁,不同的方式.在这种情况下,我的直觉是否存在误导?
解决方法
没有测试过,所以我不太确定,但是改变呢
<link href="css/style.css" rel="stylesheet">
至
<link href="/css/style.css" rel="stylesheet">
?