golang 使用embed将静态&模板文件编译进二进制文件中
🕙2023-04-05
ex:
assets目录下有
templates/ 这是一个模板目录
在assets下新建assets.go,内容如下
package assets
import "embed"
var (
//go:embed templates
Templates embed.FS
)
其中注释部分不能去掉,是引导embed去寻找相关目录进行编译
gin的模板目录引用由
r.LoadHTMLGlob("assets/templates/*")
改为
r.SetHTMLTemplate(template.Must(template.New("").ParseFS(assets.Templates, "templates/*")))
如果是静态文件则是
r. StaticFS("assets", http.FS(assets.Static))
在package assets中我并未设置assets,需要参照Templates设置assets即可
值的注意的是,如果使用了中间件,则需要加上.Funcs(r.FuncMap),例如
r.SetHTMLTemplate(template.Must(template.New("").Funcs(r.FuncMap).ParseFS(assets.Templates, "templates/*")))