在你的二进制文件中包含模板/ html文件

时间:2014-05-18 12:03:27

标签: templates go

Loving Go的内置模板库,目前我只是将模板声明为const字符串。通常如何包括更大更复杂的模板文件?理想情况下,我更喜欢它们在二进制文件中以简化部署。

4 个答案:

答案 0 :(得分:9)

Go中没有标准的方法。

正如评论所示,有一些库可以帮助您将二进制数据(如模板,图像等)转换为Go源文件,这些文件可以使用您自己的源文件编译为最终二进制文件。

虽然这种方法适用于许多项目,但我建议您重新考虑。易于分发的成本是您必须在编译主要源代码之前重新生成创建资产的源文件,并且当您想要对模板/ javascript / images&例如分发较小的更改时。以这种方式包含,您将不得不重新编译并重新启动整个服务器。

在大多数项目中,我研究前端内容的变化是迄今为止最常见的变化 - 这使我们摆脱了这种做法。

答案 1 :(得分:4)

packrgo-bindata类似,但积极维护,甚至可能更好使用:

https://github.com/gobuffalo/packr

答案 2 :(得分:2)

这是一个满足需求的解决方案,可以防止mbazon描述的困难:

https://godoc.org/github.com/go-bindata/go-bindata

它编译为二进制,但当你进入" debug"模式,它直接从磁盘读取您的静态资产。

答案 3 :(得分:2)

自 Go 1.16 发布以来,2021 年嵌入静态文件变得更加容易。新版本附带了一个新包 embed,它提供了一组方便的接口和方法来附加 go 二进制文件中的静态文件

go version
# 1.16.x

# then
go doc embed