open-nomad/vendor/github.com/elazarl/go-bindata-assetfs/README.md

63 lines
1.6 KiB
Markdown
Raw Normal View History

2017-09-19 14:47:10 +00:00
# go-bindata-assetfs
Serve embedded files from [go-bindata](https://github.com/go-bindata/go-bindata) with `net/http`.
2017-09-19 14:47:10 +00:00
[GoDoc](http://godoc.org/github.com/elazarl/go-bindata-assetfs)
### Installation
Install with
$ go get github.com/go-bindata/go-bindata/...
2017-09-19 14:47:10 +00:00
$ go get github.com/elazarl/go-bindata-assetfs/...
### Creating embedded data
Usage is identical to [go-bindata](https://github.com/go-bindata/go-bindata) usage,
2017-09-19 14:47:10 +00:00
instead of running `go-bindata` run `go-bindata-assetfs`.
The tool will create a `bindata_assetfs.go` file, which contains the embedded data.
A typical use case is
$ go-bindata-assetfs data/...
### Using assetFS in your code
The generated file provides an `assetFS()` function that returns a `http.Filesystem`
wrapping the embedded files. What you usually want to do is:
http.Handle("/", http.FileServer(assetFS()))
This would run an HTTP server serving the embedded files.
## Without running binary tool
You can always just run the `go-bindata` tool, and then
use
```go
import "github.com/elazarl/go-bindata-assetfs"
...
http.Handle("/",
http.FileServer(
&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: AssetInfo, Prefix: "data"}))
```
2017-09-19 14:47:10 +00:00
to serve files embedded from the `data` directory.
## SPA applications
For single page applications you can use `Fallback: "index.html"` in AssetFS context, so if route doesn't match the pattern it will fallback to file specified.
example
```go
import "github.com/elazarl/go-bindata-assetfs"
...
http.Handle("/",
http.FileServer(
&assetfs.AssetFS{Asset: Asset, AssetDir: AssetDir, AssetInfo: AssetInfo, Prefix: "data", Fallback: "index.html"}))
```