golang 使用embed将静态&模板文件编译进二进制文件中

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/*")))

Sitemap · Rss

津ICP备2021004480号-3