2016-07-30 72 views
0

我正在开发一个包含资源文件,特别是电子邮件模板的库。该文件在<project_root>/templates/email.html与golang分配资源

我很难从.go源中引用此文件,因为很难解析相对路径。到目前为止,我发现有三种选择:

  • 使用$GOPATH:此附带了一些依赖managemente工具可能会重新定义$GOPATH,打破

  • 使用自定义环境变量的问题:作品,但它迫使用户的lib添加变量。

  • 将字符串内联模板:很丑。

有没有人有更好的选择?我宁愿不使用第三方库,但是如果你知道一个人可以自由地指出它,所以我可以阅读资料来源,看看他们是如何做到的。

感谢

+2

考虑电子邮件模板文件中嵌入直接到您的二进制文件:参见[github.com/jteeuwen/go-bindata](https://github.com/jteeuwen/go-bindata) – Mark

+2

内联资源恕我直言开发Go库时的最佳途径。这样,资源完全透明。将模板嵌入二进制文件将直接影响那些使用您的库并需要编译它的人。 – jnmoal

回答

1

最常用的技术是嵌入的资源,让所有你需要做的就是分配二进制。

围棋图书馆This list有做资源嵌入库的列表:

  • esc - 内嵌文件到电脑围棋程序,并提供给他们http.FileSystem接口。
  • fileb0x - 嵌入文件的简单工具,关注“自定义”并易于使用。
  • go-bindata - 将任何文件转换为可管理的Go源代码的软件包。
  • go-embed - 生成代码将资源文件嵌入到您的库或可执行文件中
  • go-resources - 使用Go嵌入的Unfancy资源。
  • go.rice - go.rice是一个Go软件包,可以使用诸如html,js,css,图像 和模板非常简单的资源。
  • statics - 为单个二进制编译嵌入静态资源到go文件+与 http.FileSystem +符号链接一起使用。
  • vfsgen - 生成一个静态实现给定虚拟文件系统的vfsdata.go文件。