Negroni with go-bindata
negroni.Classic()
is useful if you need to cook up something quick with a working public/
directory serving. What if you want to compile the assets with go-bindata
and serve everything up in a single binary?
You can do this easily with go-bindata-assetfs
that works like an http.Fileserver()
, but you go have to recompose the negroni.Classic()
call to the following:
package main
import (
"github.com/codegangsta/negroni"
"github.com/gorilla/mux"
)
func myNegroni() *negroni.Negroni {
return negroni.New(negroni.NewRecovery(), negroni.NewLogger(), negroni.NewStatic(assetFS()))
}
func main() {
r := mux.NewRouter()
r.HandleFunc("/about", aboutHandler)
r.HandleFunc("/view/{id}", viewHandler)
// etc...
n := myNegroni()
n.UseHandler(r)
n.Run(":3000")
}
Of course, this assumes that you've compiled your public/
directory with the following:
$ go-bindata-assetfs public/...
You can also compile with the -debug
flag so that it uses the actual files, but provides the same interface for you so that you don't have to recompile every time you changed the html/js/css/images, etc.
Written by Wari Wahab
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Golang
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#