Golang模板在不同的目录级别上提供css

时间:2013-08-14 09:20:14

标签: html css go

我正在使用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级别,但是我觉得必须有另一种更清洁,不同的方式。在这种情况下,我的直觉是否存在误判?

1 个答案:

答案 0 :(得分:8)

没有测试过,所以我不太确定,但是改变呢

<link href="css/style.css" rel="stylesheet">

<link href="/css/style.css" rel="stylesheet">