Gin编译打包静态文件和模板文件

golang gin 22-11-10 20:36 17  

项目目录结构中包含的静态文件和模板文件: ``` |- 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 编译后文件名称 ```