go - 在golang中,资源应该保留在哪

  显示原文与译文双语对照的内容
0 0

我的应用程序使用json配置文件和其他资源。 应该将它们放在我的项目层次结构中? 在 http://golang.org/doc/code.html 中找不到答案( 如何编写 go 代码)

更新:问题不是关于使用应用程序自动分配资源,而是简单得多: 在项目层次结构中我应该保留资源的位置? 有没有标准的地方有人希望他们?

时间: 原作者:

0 0

没有一个正确的答案,任何 go 工具都没有假设或者实施任何强大的约定。

通常我首先假设我需要的文件位于运行程序的同一个目录中。 例如假设我需要 conf.jsonmyprog.go ;那么这两个文件都在同一个目录中共存,它可以运行类似

go build -o myprog &&./myprog

当我部署代码时,myprog 二进制和 conf.json 在服务器上共存。 运行/监督脚本需要 cd 到那个目录,然后运行这个程序。

当你拥有大量的资源时,这也是可行的;例如如果你有一个带有 JS,CSS和图像的web服务器,那么就假设它们是相对于代码中的cwd,并将资源目录与服务器二进制一起部署。

另一个假设cwd的方法是拥有一个 -conf 标志,用户可以使用它来指定配置文件。 我通常使用它来分发command-line工具和需要一个配置文件的open-source服务器应用程序。 你甚至可以使用一个 -assets 标志或者什么来指向一个完整的资源文件树,如果你想。

最后,另一种方法是不包含任何资源文件。 go-bindata是一个有用的工具,我有用于此目的--只是将一些数据编码为字节 go 源文件。 这样就可以把它放到你的二进制中。 我认为这种方法在资源数据很少或者永远不会改变的情况下是最有用的,而且非常小。 ( 否则,你将会围绕着巨大的二进制文件进行传送) 一个( 有点傻) 例子,过去我使用的go-bindata是一个简单的服务器,它不需要任何额外的文件,除了服务器二进制之外的任何额外文件。

...