利用statik
库将静态资源嵌入二进制,但是GIN并没有提供从http.FileSystem
加载模板的方法,所以得手动去加载
主要实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| func initTemplates() *template.Template { statikFS, err := fs.New() if err != nil { log.Fatal(err) } t := template.New("") err = fs.Walk(statikFS, config.TemplateDir, func(path string, info os.FileInfo, err error) error { if filepath.Ext(info.Name()) == ".gohtml" { f, err := statikFS.Open(path) if err != nil { return err }
b, err := ioutil.ReadAll(f) if err != nil { return err }
_, err = t.New(path[1:]).Parse(string(b)) if err != nil { return err } }
return nil })
if err != nil { log.Println("Load templates error") log.Fatal(err) } return t }
|
之后可以通过SetHTMLTemplate方法加载模板
1 2
| r := gin.Default() r.SetHTMLTemplate(initTemplates())
|