10

我正在使用 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">

但是,当我从 / 导航到 /blog/ 时,我的 css 下降了一个级别(或者我上升了一个级别,但是您希望看到它),因此 css href 突然指向 /blog/css/style.css 和因此它不会渲染。

这可以很容易地解决,说明我与 _base.html 合并的每个内容文件中的 css 级别,但是我觉得必须有另一种更清洁、不同的方式。在这种情况下是否存在或我的直觉错误判断?

4

1 回答 1

9

没有测试它,所以我不太确定,但是改变一下

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

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

?

于 2013-08-14T09:26:58.390 回答