Gin编译打包静态文件和模板文件
项目目录结构中包含的静态文件和模板文件:
```
|- static //静态目录
|--- js
|--- css
|--- images
|- templates //模板目录
|--- index.html
|--- login.html
```
1、安装bindata
```
go get -u github.com/jteeuwen/go-bindata/... #后面三个点必须要,不是写错了
go get -u github.com/elazarl/go-bindata-assetfs/... #后面三个点必须要,不是写错了
```
2、打包静态资源和模板文件
```
go-bindata -o=bindata/bindata.go -pkg=bindata ./static/... ./templates/...
```
这里将打包后的文件输出到bindata/bindata.go文件中,而且将包名设置为:bindata,这里打包了static和templates目录下所有文件。
3、修改模板文件
修改前:
```
//加载模板文件
router.LoadHTMLGlob("./templates/*")
```
修改后:
```
//加载模板文件
t, err := loadTemplate()
if err != nil {
panic(err)
}
router.SetHTMLTemplate(t)
/////////////////////////////新增函数///////////////////////////////
//加载模板文件
func loadTemplate() (*template.Template, error) {
t := template.New("")
for _, name := range bindata.AssetNames() {
if !strings.HasSuffix(name, ".html") {
continue
}
asset, err := bindata.Asset(name)
if err != nil {
continue
}
name := strings.Replace(name, "templates/", "", 1) //这里将templates替换下,在控制器中调用就不用加templates/了
t, err = t.New(name).Parse(string(asset))
if err != nil {
return nil, err
}
}
return t, nil
}
```
4、修改静态文件调用
```
//加载静态资源,例如网页的css、js
router.Static("/static", "static")
```
修改后:
```
//加载静态资源,例如网页的css、js
fs := assetfs.AssetFS{
Asset: bindata.Asset,
AssetDir: bindata.AssetDir,
AssetInfo: nil,
Prefix: "static", //一定要加前缀
}
router.StaticFS("/static", &fs)
```
5、进行编译
```
go build -o 编译后文件名称
```