Add example to build single binary with templates (#1328)

This commit is contained in:
JINNOUCHI Yasushi
2018-04-22 16:04:38 +09:00
committed by Bo-Yi Wu
parent dfe37ea6f1
commit 814ac9490a
8 changed files with 175 additions and 1 deletions

View File

@ -49,6 +49,7 @@ Gin is a web framework written in Go (Golang). It features a martini-like API wi
- [Support Let's Encrypt](#support-lets-encrypt)
- [Run multiple service using Gin](#run-multiple-service-using-gin)
- [Graceful restart or stop](#graceful-restart-or-stop)
- [Build a single binary with templates](#build-a-single-binary-with-templates)
- [Testing](#testing)
- [Users](#users--)
@ -1393,6 +1394,50 @@ func main() {
}
```
### Build a single binary with templates
You can build a server into a single binary containing templates by using [go-assets][].
[go-assets]: https://github.com/jessevdk/go-assets
```go
func main() {
r := gin.New()
t, err := loadTemplate()
if err != nil {
panic(err)
}
r.SetHTMLTemplate(t)
r.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "/html/index.tmpl",nil)
})
r.Run(":8080")
}
// loadTemplate loads templates embedded by go-assets-builder
func loadTemplate() (*template.Template, error) {
t := template.New("")
for name, file := range Assets.Files {
if file.IsDir() || !strings.HasSuffix(name, ".tmpl") {
continue
}
h, err := ioutil.ReadAll(file)
if err != nil {
return nil, err
}
t, err = t.New(name).Parse(string(h))
if err != nil {
return nil, err
}
}
return t, nil
}
```
See a complete example in the `examples/assets-in-binary` directory.
## Testing
The `net/http/httptest` package is preferable way for HTTP testing.