当前位置: 首页 > 网络应用技术

Golang练习记录:静态资源文件集成:初步使用

时间:2023-03-07 23:09:12 网络应用技术

  本文介绍了如何集成Golang中的静态资源文件,将静态资源文件编译到二进制可执行文件中。无论是图片还是其他文件,它实际上都可以用作资源文件并可以嵌入到可执行文件中。其他程序的包装可能是一个概念,也可能不是。

  大约10年前,在2011年,我研究了如何将图片嵌入可执行文件中。当时,C语言主要是在臂板上实施和测试的。该文章如下:

  那时,我对技术有浓厚的兴趣。我从没想过汽车。现在,我经常想做一辆汽车,但我也被迫对技术感兴趣。现在使用Golang语言再次学习。

  经过调查后,有两个类似的工具:go-bindata和go-bindata-assetfs。两个可以将文件转换为Golang语言代码。后者似乎取决于前者。为了使用它,暂时尚未研究细节。我查看生成的Golang代码。外部提供了一些接口。存储文件的字节流。

  使用命令安装:

  输入相应的命令验证:

  为了适合项目目录,本文规定了静态目录存储静态资源文件 - 即需要打包到可执行程序的文件,生成代码,将其存储到Bindata目录及其其及其其及其其及其。软件包名称也是Bindata。研究后,Go-Bindata-Assetfs似乎更好,因此本文使用此工具来生成命令,如下所示:

  指定输出文件,指定软件包名称(通常与前者一致),指定需要忽略的文件,并指定文件路径前缀(在本示例中,指定前缀,代码中没有前缀)。。如果您不需要如此复杂,则可以在同一目录上使用包装生成生成的文件,并且软件包名称也是主。它可用于简单测试:

  为了调试便利 - 也就是说,如果您不需要每次更新代码时都需要更新文件,则可以添加参数。命令如下:

  添加选项后,修改原始资源文件后,将重新运行程序,并且获得的内容将更改。它不需要重新生成即可轻松调试。内部实现的原理:将bindataread调用读取文件时,添加了文件的绝对路径。如果不是debug版本,则没有路径。

  资源文件目录静态如下:

  主要接口如下:

  指定的文件认为根目录与一般路径不同。

  完整的测试代码如下:

  以libfoo.so文件为例,原始文件和保留的文件如下:下面:

  两者的内容是相同的。

  本文中描述的方法可以在一定范围内使用。对于大型项目或多人协作项目,不建议对此方法进行回应,作者认为可以做的是:1。与Web服务相关的CSS,JS,HTML等集成可执行的二进制文件,用于轻松部署。在作者将要实施的Web服务中,因为该功能是唯一的,它是内部使用的,并且仅由作者实现,因此对技术堆栈有一个完整的决定。功能就足够了,因此可以促进自己,因此对其进行设计。2。动态库的集成。如果涉及动态库文件的使用,则可以将动态库包装到可执行文件中,将其读取并将其存储到运行时的指定目录中,然后加载。此方法将两者绑定在一起,不能仅更新以更新以更新动态库文件,因此需要谨慎3。集成文件集成。对于需要配置文件的过程,您需要在部署时携带自己的配置文件,或在默认情况下首先运行。对于后者,有些是在代码中直接配置的,请根据情况编写指定的目录,并使用本文将配置文件直接包装到二进制文件中。如果不存在,请将其写入指定目录4。其他要探索和实施。