1.1.0 • Published 11 years ago
templation v1.1.0
templation
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.
Install
$ npm install templationAPI
var Templation = require('templation')
var views = new Templation()
views.use('html', Templation.engines.html)var views = new Templation(options)
Create a new view system. Options are:
cache- whether to cache the templates. Defaults totruein production.root- the root folder to look for templates. Defaults toprocess.cwd(), so you should set this.
views.use(extension, engine)
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)-compiledis whatever is compiled from.compile(). It should return (optionally via promise) aString,Buffer, orStream
views.render(name, options)
Render the template name, which resolves against root.
Returns a promise, which then returns a String, Buffer, or Stream.
views.cache
Enable or disable the caching system. (true / false)
Templation.engines
A list of included engines. Generally, the API usage is:
views.use('html', Templation.engines.html)Included adapters are:
Examples
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')
})
})