golang里使用go-bindata实现资源文件打包的机制
在日常代码开发过程中,我们会遇到需要将某些资源打包到程序里方便进行发布,例如模板文件、静态资源文件,在Go里可以通过go-bindata来实现这种机制,本文简单介绍go-bindata的使用方法。
go-bindata安装
go install github.com/go-bindata/go-bindata@latest
资源文件打包
打包某些目录下的全部文件,包括子目录:
go-bindata data1/... data2/...
指定生成文件的文件名为mydata.go:
go-bindata -o mydata.go data/...
跳过某些文件的方法:
go-bindata -ignore=\\.gitignore data/...
访问资源文件
访问某个文件资源:
data, err := Asset("data/style/foo.css") if err != nil { // 资源未找到 return } // 使用资源...
解压资源到某个目录:
if err = RestoreAssets("/data/test/", "data1"); err != nil { // ...解压资源失败 return }
网络请求中访问
使用-fs标签可以生成AssetFile()方法,返回http.FileSystem接口,使用方法如下:
go-bindata -fs -prefix "static/" static/
路由调用方法:
mux := http.NewServeMux() mux.Handle("/static", http.FileServer(AssetFile())) http.ListenAndServe(":8080", mux)