A node.js view system similar to what you're used to with Express' res.render().
Inspired by co-views and
consolidate.js.
.render() always returns a Promise.$ npm install templation
var Templation = require('templation')
var views = new Templation()
views.use('html', Templation.engines.html)
Create a new view system. Options are:
cache - whether to cache the templates.
Defaults to true in production.root - the root folder to look for templates.
Defaults to process.cwd(), so you should set this.Use a custom view engine.
extension is a file extension to map this engine to.
engine is an object with the following methods:
.compile(filename, options) - it should return (optionally via promise)
a "compiled template". The "compiled template" must be an object or function.
This gets cached when cache: true!.render(compiled, options) - compiled is whatever is compiled from .compile().
It should return (optionally via promise) a String, Buffer, or StreamRender the template name, which resolves against root.
Returns a promise, which then returns a String, Buffer, or Stream.
Enable or disable the caching system. (true / false)
A list of included engines. Generally, the API usage is:
views.use('html', Templation.engines.html)
Included adapters are:
var Templation = require('templation')
var views = new Templation()
views.use('html', Templation.engines.html)
http.createServer(function (req, res) {
views.render('home').then(function (html) {
// assuming html is a string
res.setHeader('Content-Length', Buffer.byteLength(html))
res.setHeader('Content-Type', 'text/html')
res.end(html)
}, function (err) {
res.statusCode = err.status || 500
res.end('Internal Server Error')
})
})