The PrefixDir function

The iris.PrefixDir function wraps an existing "fs" file system and returns a new one which open files by prepending the path with the given "prefix".

func PrefixDir(prefix string, fs http.FileSystem) http.FileSystem

It is extremely useful when you use a go-bindata file to embed both view templates and public static files. With PrefixDir you can select which directory to use to serve static files and which to render views.

Example

│ main.go
| bindata.go
└───data/
└──────views/
│ ...your templates
└──────public/
│ ...your public assets

Let's build the bindata.go file which will contain the embedded ./data directory:

$ go get -u github.com/go-bindata/go-bindata/...
$ go-bindata -fs ./data/...

Use the ./data/views for templates and ./data/public for file server:

templatesFS := iris.PrefixDir("./data/views", AssetFile())
app.RegisterView(iris.HTML(templatesFS, ".html"))
publicFS := iris.PrefixDir("./data/public", AssetFile())
app.HandleDir("/", publicFS)