[golang]Go内嵌静态资源go-bindata的安装及使用_浩秦的博客-CSDN博客
go-bindata -o=bindata/bindata.go -ignore="\\\\.DS_Store|desktop.ini|README.md" -pkg=bindata -prefix=assets assets/...
assets
目录放了资源文件之后,为了避免混淆,也为了一眼能看出来是 go-bindata 生成的代码,源码路径、文件名 和 包名,都统一改为了 bindata
。assets
目录下,增加 prefix
参数,在生成的代码中去掉公共前缀。这样就可以直接用 abc.png
来引用 assets/abc.png
。// Code generated by go-bindata. DO NOT EDIT. @generated
// sources:
// assets/web.toml
// ...
// 被转换的文件清单...
package bindata
import (/*...*/)
// 私有结构体、函数定义
// ...
// 数据以私有 []byte 的方式保存
// ...
// 篇幅关系,只展示公共 API
// Asset 根据文件名读取文件内容的 []byte,出错返回 error
func Asset(name string) ([]byte, error) {/*...*/}
// MustAsset 跟 Asset 的区别只在于出错不返回 error ,直接 panic
func MustAsset(name string) []byte {/*...*/}
// AssetInfo 根据文件名返回文件信息
func AssetInfo(name string) (os.FileInfo, error) {/*...*/}
// AssetNames 返回所有文件名
func AssetNames() []string {/*...*/}
// AssetDir 返回指定目录下的所有文件,可以近似看作 ls / dir 命令
// 参数从根目录算起,空串 "" 当作根目录
func AssetDir(name string) ([]string, error) {/*...*/}
// RestoreAsset 将 name 指定的文件,恢复到 dir 指定的位置上
func RestoreAsset(dir, name string) error {/*...*/}
// RestoreAssets 是递归版的 RestoreAsset,如果 name 是目录,会递归执行下去
func RestoreAssets(dir, name string) error {/*...*/}
除此以外,再了解一下 -debug
和 -dev
参数,就基本够用了,更多参数完全可以看着帮助信息自己试。
加了这两个参数(的其中一个),转换时不会真的把资源放进生成的源码,还是去原来的文件读,只是做了一层 API 封装。这样有利于开发和资源设计并行。
debug
和 dev
之间的差别,仅仅是背后加载文件时,使用 绝对路径 还是 相对路径。这个看调试方便,差别不是特别大,正式的构建时时一定要关掉的。