Caution
This repository is archived and no longer actively maintained.
We are no longer accepting issues, feature requests, or pull requests. For additional support or questions, please visit the Express.js Discussions page.
A node.js view system similar to what you're used to with Express' res.render()
.
Inspired by co-views and
consolidate.js.
- First-class async support.
.render()
always returns a Promise. - Streams are supported.
- Template adapters are integrated, but are retrieved lazily to avoid code bloat.
- Easier plugin system for custom renderers.
$ 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 totrue
in production.root
- the root folder to look for templates. Defaults toprocess.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 whencache: true
!.render(compiled, options)
-compiled
is whatever is compiled from.compile()
. It should return (optionally via promise) aString
,Buffer
, orStream
Render 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')
})
})