Skip to content

The iris.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".

go
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

text
│   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:

sh
$ 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:

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

publicFS := iris.PrefixDir("./data/public", AssetFile())
app.HandleDir("/", publicFS)

Built with excellence by Hellenic Development, delivering enterprise-grade solutions.