如何访问包外的模板?

时间:2014-12-11 05:42:43

标签: go

我已根据this structure设置了一个简单的网站。我运行main.go,一切正常。我希望能够在另一个软件包中使用这个webapp,比如" github.com/my/package"。我复制了#34; main.go"到" github.com/my/package"目录并运行它然后得到:

"panic: open templates/user/view.html: no such file or directory"

this file, for instance,中修改模板文件路径的建议方法是什么,以便我可以访问模板?我可以想到两个解决方案:

  1. 将view.go中的绝对路径硬编码到模板文件中。
  2. 在view.go中有一个全局变量然后找出模板文件与新的main.go文件相关的位置&将变量设置为该路径。
  3. 如果其他人试图使用该包,第一个肯定会破裂。第二个选项是有点复杂的b / c你需要找到main的路径然后通过&找出模板的位置......看起来很复杂。

    有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

你可以看看go-bindata。它使外部文件(如模板)成为二进制文件的一部分。如果您希望能够在不重新编译的情况下更改模板

,那么它不是一个很好的解决方案

答案 1 :(得分:0)

如果有功能用作包/在其他地方重用,那么惯用的方法是将该功能移到包中 - 通常在pkg目录中。

强制性的camlistore示例位于https://github.com/camlistore/camlistore/tree/master/pkg

如何执行此操作的另一个资源是'12 golang best practices'对话