我已遵循Go网站上的“ 编写Web应用程序”教程,并且开始编写自己的Web应用程序。我还阅读了《如何编写Go代码》的开始,并尝试使用相同的工作区结构来组织我的代码。
我正在编写一个名为mygosite的简单Web应用程序,该应用程序通过呈现单个模板来处理所有请求。运行之后go install github.com/wesleym/mygosite,我的目录结构现在看起来像这样:
go install github.com/wesleym/mygosite
go +-src | +-github.com | +-wesleym | +-mygosite | +-mygosite.go | +-templates | +- index.html | +-.git +-bin +-mygosite
在我的代码中,我指的是带有path的模板templates/index.html。运行时bin/mygosite,应用程序找不到源模板,因为它位于源代码树中。由于模板对我的应用程序很重要,因此我不想将其移出mygosite git存储库。
templates/index.html
bin/mygosite
考虑到我要执行的操作,目录布局是否合理?我应该在代码中将模板的路径更改为src/github.com/wesleym/mygosite/templates/index.html吗?诸如CSS和JavaScript之类的静态资产又如何?当需要引入静态资产时,这些资产应该去哪儿呢?
src/github.com/wesleym/mygosite/templates/index.html
tl; dr:我应该在Go Web应用程序项目中的哪里放置模板和静态文件?
我在Go Web应用程序项目中的哪里放置模板和静态文件?
是“错误”的问题。如果您询问“我的可执行文件将如何找到其资源?” 您几乎可以找到解决方案:可执行文件应该从(或几个)可配置的位置读取其资源(提供合理的默认值总是很不错的)。当前工作目录中的命令行标志,环境变量和配置文件对于此类任务很常见。(当然,如果您只有少量的小资源:按照VonC的建议将它们打包到可执行文件中;一旦开始包含图像或视频之类的大资产,此方案就会崩溃。)