小编典典

Go Web应用程序的目录结构

go

我已遵循Go网站上的“
编写Web应用程序”教程,并且开始编写自己的Web应用程序。我还阅读了《如何编写Go代码》的开始,并尝试使用相同的工作区结构来组织我的代码。

我正在编写一个名为mygosite的简单Web应用程序,该应用程序通过呈现单个模板来处理所有请求。运行之后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存储库。

考虑到我要执行的操作,目录布局是否合理?我应该在代码中将模板的路径更改为src/github.com/wesleym/mygosite/templates/index.html吗?诸如CSS和JavaScript之类的静态资产又如何?当需要引入静态资产时,这些资产应该去哪儿呢?

tl; dr:我应该在Go Web应用程序项目中的哪里放置模板和静态文件?


阅读 345

收藏
2020-07-02

共1个答案

小编典典

我在Go Web应用程序项目中的哪里放置模板和静态文件?

是“错误”的问题。如果您询问“我的可执行文件将如何找到其资源?”
您几乎可以找到解决方案:可执行文件应该从(或几个)可配置的位置读取其资源(提供合理的默认值总是很不错的)。当前工作目录中的命令行标志,环境变量和配置文件对于此类任务很常见。(当然,如果您只有少量的小资源:按照VonC的建议将它们打包到可执行文件中;一旦开始包含图像或视频之类的大资产,此方案就会崩溃。)

2020-07-02