当前位置: 首页 > article >正文

go-bindata

go bindata

在项目中引用了静态资源时,项目打包后,需要保证包与静态资源的相对目录不变。bindata可以将静态资源生成.go文件,在打包时会嵌入到包中,非常好用。

安装

需要让bindata下载到GOPATH/bin目录下,在项目外执行命令:

go install github.com/jteeuwen/go-bindata/...@master

生成

go bindata支持以下参数

PS D:\go_workspace\src\test> go-bindata
Missing <input dir>

Usage: D:\g\versions\1.22.8\bin\go-bindata.exe [options] <input directories>

  -debug
        Do not embed the assets, but provide the embedding API. Contents will still be loaded from disk.
  -dev
        Similar to debug, but does not emit absolute paths. Expects a rootDir variable to already exist in the generated code's package.
  -ignore value
        Regex pattern to ignore
  -mode uint
        Optional file mode override for all files.
  -modtime int
        Optional modification unix timestamp override for all files.
  -nocompress
        Assets will *not* be GZIP compressed when this flag is specified.
  -nomemcopy
        Use a .rodata hack to get rid of unnecessary memcopies. Refer to the documentation to see what implications this carries.
  -nometadata
        Assets will not preserve size, mode, and modtime info.
  -o string
        Optional name of the output file to be generated. (default "./bindata.go")
  -pkg string
        Package name to use in the generated code. (default "main")
  -prefix string
        Optional path prefix to strip off asset names.
  -tags string
        Optional set of build tags to include.
  -version
        Displays version information.

生成.go文件

go-bindata -o=pkg/bindata.go -pkg=pkg template/...

将template/下的静态资源生成到pkg/bindata.go,文件的包名为pkg。
如果出现bindata: Failed to stat input path '.go': CreateFile .go,删除.go ,再修改文件名即可。

PS D:\go_workspace\src\test> go-bindata -o=pkg/bindata.go -pkg=pkg template/...
bindata: Failed to stat input path '.go': CreateFile .go: The system cannot find the file specified.

使用

生成的bindata.go为我们提供了这些方法

// 根据名称加载并返回文件内容
func Asset(name string) ([]byte, error) {}

// 类似于Asset,但在出错时会panic,适用于初始化全局变量
func MustAsset(name string)[]byte{}

// 返回文件的元数据信息
func AssetInfo(name string)(os.FileInfo,error){}

// 返回所有嵌入文件的名称列表
func AssetNames() []string{}

// 返回指定目录下的文件和子目录名称
func AssetDir(name string) ([]string, error){}

// 将单个嵌入的文件恢复到指定目录
func RestoreAsset(dir, name string) error{}

// 递归的将嵌入的文件和目录恢复到指定目录
func RestoreAssets(dir, name string) error{}

使用很简单,如:

temp, err := tools.Asset("data/template/reach_overstock_info.tmpl")
	if err != nil {
		vars.Logger.Errorf(ctx, "wechat_service.SendReachOverstockMessage tools.Asset err %#v", err)
	}
src := data.Overstocks
tmpl, err := template.New("reach_overstock_info").Parse(string(temp))

小结

go bindata为我们提供了将静态资源嵌入到包里,即将静态资源生成.go文件。


http://www.kler.cn/a/395733.html

相关文章:

  • Kafka 安装教程
  • Flutter:input输入框
  • FingerprintSimilarity和BulkTanimotoSimilarity的区别
  • 使用c#实现TCP客户端与服务器端
  • C# Winform--SerialPort串口通讯(ASCII码发送)
  • 如何在Mac上切换到JDK 17开发环境
  • 酷炫的鼠标移入效果(附源码!!)
  • Web基础1 -- HTML(超文本标记语言)
  • Python调用API翻译Excel中的英语句子并回填数据
  • 3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用)
  • 计算机网络中的域名系统(DNS)及其优化技术
  • 电子应用产品设计方案-9:全自动智能马桶系统设计方案
  • 面试问答:什么是滑动窗口
  • 一文说清:C静态库与动态库的区别
  • C#桌面应用制作计算器
  • 开源项目推荐——OpenDroneMap无人机影像数据处理
  • Oracle 单机及 RAC 环境 db_files 参数修改
  • Linux基础—pxe装机
  • 【拉箱子——模拟+DFS】
  • JAVA学习-练习试用Java实现“网络编程”
  • LlamaFactory介绍
  • Java爬虫:获取商品历史价格信息 API 数据
  • 英伟达基于Mistral 7B开发新一代Embedding模型——NV-Embed-v2
  • CTF攻防世界小白刷题自学笔记12
  • 企业生产环境-麒麟V10(ARM架构)操作系统部署kafka高可用集群
  • Lambda常用方法