使用go通过http提供静态文件

时间:2017-04-15 11:39:56

标签: go

在我的html中,我尝试使用

包含JS
<script src="/js/app.js"></script>

我也尝试了相对路径(来自服务器位置)

<script src="js/app.js"></script>

和来自html文件的亲戚     

我的文件结构

-js
    app.js
-templates
    index.html
hub.go
main.go

main.go是服务器

func main() {
    http.HandleFunc("/", rootHandler)
    http.ListenAndServe(":8080", nil)
}

func rootHandler(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "Templates/index.html")
}

我是否遗漏了某些东西,我必须通过服务器服务器css / js?或者应该简单的HTML工作

1 个答案:

答案 0 :(得分:5)

要通过http提供文件,请为目录定义FileServer,并使用"/assets/"将其路由到http.Handle
以下设置应该适合您:

目录结构:

├── assets/
│   ├── js
│   └── css
├── templates/
└── main.go

main.go

func main() {
    http.HandleFunc("/", rootHandler)
    http.Handle("/assets/", http.StripPrefix("/assets/", http.FileServer(http.Dir("assets"))))
    http.ListenAndServe(":8080", nil)
}

func rootHandler(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "templates/index.html")
}
模板文件中的

<script src="/assets/js/app.js"></script>