最佳答案
我正在使用 Go 开发一个小型的 web 应用程序,它可以作为开发人员机器上的一个工具来帮助调试他们的应用程序/web 服务。该程序的界面是一个网页,不仅包括 HTML,还包括一些 JavaScript (用于功能)、图像和 CSS (用于样式)。我计划开放这个应用程序的外包,这样用户就可以运行 Makefile,所有的资源就可以到达他们需要去的地方。但是,我还希望能够简单地分发一个可执行文件,其中尽可能少地包含文件/依赖项。有没有一种好的方法可以将 HTML/CSS/JS 与可执行文件捆绑在一起,这样用户只需要下载一个文件就可以了?
现在,在我的应用程序中,提供静态文件有点像这样:
// called via http.ListenAndServe
func switchboard(w http.ResponseWriter, r *http.Request) {
// snipped dynamic routing...
// look for static resource
uri := r.URL.RequestURI()
if fp, err := os.Open("static" + uri); err == nil {
defer fp.Close()
staticHandler(w, r, fp)
return
}
// snipped blackhole route
}
所以它非常简单: 如果请求的文件存在于我的静态目录中,调用处理程序,它只是打开文件并尝试在服务之前设置一个良好的 Content-Type
。我的想法是,没有理由需要基于真正的文件系统: 如果有已编译的资源,我可以简单地通过请求 URI 对它们进行索引,并以这种方式提供服务。
如果没有好办法,请告诉我否则我就找错人了。我只是觉得最终用户会希望管理的文件越少越好。
如果有比 去吧更合适的标签,请随时添加或让我知道。