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

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


凤凰求蛊
浏览 251回答 1
1回答

qq_花开花谢_0

没有测试过,所以我不太确定,但是如何改变<link&nbsp;href="css/style.css"&nbsp;rel="stylesheet">至<link&nbsp;href="/css/style.css"&nbsp;rel="stylesheet">?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go