Template rendering middleware for koa-grace.(Forked from https://github.com/queckezz/koa-views.)
$ npm install koa-grace-views
As of right now, koa-views
is using consolidate under the hood.
var views = require('koa-views');
// Must be used before any router is used
app.use(views(__dirname + '/views', {
map: {
html: 'underscore'
}
}));
app.use(function* (next) {
this.state = {
session: this.session,
title: 'app'
};
yield this.render('user', {
user: 'John'
});
});
This module won't get converted to koa 2 until v8 lands async-await
. If you want to use koa 2 you need to wrap this module with koa-convert and build your code with babel 6. View this issue if you run into problems.
app.use(convert(views(__dirname, {
map: {
html: 'nunjucks'
}
})))
app.use(async (ctx, next) => {
ctx.render = co.wrap(ctx.render.bind(ctx))
await next()
})
app.use(async (ctx, next) => {
await ctx.render('./views/user.html')
})
For more examples take a look at the tests
root
: Where your views are located. All views yourender()
are relative to this path.opts
(optional)opts.extension
: Default extension for your views
// instead of this
yield this.render('user.jade')
// you can
yield this.render('user')
opts.map
: map extension to an engine
app.use(views(__dirname, { map: {html: 'nunjucks' }}))
// render `user.html` with nunjucks
app.use(function *() {
yield this.render('user.html')
})
Set the DEBUG
environment variable to koa-views
when starting your server.
$ DEBUG=koa-views