2016-07-30 43 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文件。