我的应用程序使用json配置文件和其他资源.我应该将它们放在我的项目层次结构中?我在http://golang.org/doc/code.html(如何编写Go代码)中找不到答案
更新:问题不在于使用应用程序自动分配资源,而是更简单:我应该将资源保留在项目层次结构中的哪个位置?是否有人希望他们有一些标准的地方?
Cal*_*are 10
没有单一的正确答案,目前任何Go工具都没有任何强有力的约定.
通常我首先假设我需要的文件位于运行程序的同一目录中.举例来说,假设需要conf.json
的myprog.go
; 然后这两个文件一起存在于同一个目录中,它可以运行类似的东西
go build -o myprog && ./myprog
Run Code Online (Sandbox Code Playgroud)
当我部署代码时,myprog
二进制文件conf.json
一起存在于服务器上.运行/超级用户脚本需要到cd
该目录,然后运行该程序.
当你拥有大量资源时,这也有效; 例如,如果您有一个包含JS,CSS和图像的Web服务器,您只需假设它们与代码中的cwd相关,并将资源目录与服务器二进制文件一起部署.
假设cwd的另一种方法是使用一个-conf
标志,用户可以使用该标志来指定配置文件.我通常使用它来分发需要单个配置文件的命令行工具和开源服务器应用程序.如果需要,您甚至可以使用-assets
标志或其他东西指向整个资源文件树.
最后,还有一种方法是没有任何资源文件.go-bindata是我用于此目的的有用工具 - 它只是将一些数据作为字节编码到Go源文件中.这样它就全都融入了你的二进制文件.我认为这种方法在资源数据很少或永远不会改变时非常有用,而且非常小.(否则你将围绕巨大的二进制文件运送.)过去我使用go-bindata的一个(有点愚蠢的)例子是将一个favicon烘焙到一个非常简单的服务器中,否则不需要任何服务器除服务器二进制文件外的额外文
归档时间: |
|
查看次数: |
8841 次 |
最近记录: |