我正在开发Go中的一个小型Web应用程序,它旨在作为开发人员机器上的工具来帮助调试他们的应用程序/Web服务.该程序的界面是一个网页,其中不仅包括HTML,还包括一些JavaScript(用于功能)、图像和CSS(用于样式).我计划开源这个应用程序,这样用户只需运行一个Makefile,所有的资源就会到达他们需要的地方.不过,我也希望能够以尽可能少的文件/依赖项简单地分发可执行文件.Is there a good way to bundle the HTML/CSS/JS with the executable, so users only have to download and worry about one file?个
现在,在我的应用程序中,提供静电文件的服务看起来有点像这样:
// 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
}
所以它非常简单:如果请求的文件存在于我的静电目录中,调用处理程序,它只是打开文件,并在提供服务之前try 将值设置为Content-Type
.我的 idea 是,这没有理由需要基于真实的文件系统:如果有编译过的资源,我可以简单地根据请求URI对它们进行索引并按此方式提供服务.
如果没有好办法,或者我这么做是找错了方向,请告诉我.我只是觉得最终用户会希望管理的文件尽可能少.
如果有超过go个合适的标签,请随时添加或通知我