吾八哥博客

您现在的位置是:首页 > 码农手记 > Golang > 正文

Golang

golang里使用go-bindata实现资源文件打包的机制

吾八哥2022-06-03Golang135

在日常代码开发过程中,我们会遇到需要将某些资源打包到程序里方便进行发布,例如模板文件、静态资源文件,在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)