如何将 Go HTML 模板嵌入到代码中?

Ser*_*rov 3 html templates go

我有一组模板作为文件,例如base.html,,login.htmlprofile.htmlheader.html。它们以文件夹的形式组织。

在开发过程中将它们作为单独的文件很好,但是当我部署应用程序时,我希望将它们全部嵌入为字符串或解析和编译的模板,以便像往常一样从代码中使用。

我应该如何更好地将这些模板制作为 Go 代码?这样我就不必在生产中拥有templates文件夹,而是在单个可执行文件中拥有所有内容?

zse*_*rge 11

对于 Go 1.16,将有官方"embed"包,并且以下内容是可能的(如果您在 2021 年 2 月之后阅读本文,则可能是这样):

//go:embed "mytemplate.tmpl"
var myTemplate string
Run Code Online (Sandbox Code Playgroud)

该代码在编译时嵌入mytemplate.html,并且可以作为字符串使用(或者作为[]byte或作为文件系统,如果您愿意)。无需第三方工具或库。