Nodejs Express Multiple View Engines
Node.js: Multiple templating engines simultaneously in express.
I will start by saying that I am not a big fan of haml or jade. While I understand why some developers might and do enjoy them I prefer something more moustachesque
In the case you want to use more than one templating engine on your [express][] app, here is the simple setup.
You can use consolidate.js to reconcile various engines.
Also, handlebars does not support layouts. I found express3-handlebars to fix that.
var express = require('express')
, cons = require('consolidate')
, exphbs = require('express3-handlebars')
, app = express()
, hbs = exphbs.create({defaultLayout: 'main.html'});
app.set('views', __dirname + '/views');
// assign the swig engine to .html files
app.engine('jade', cons.jade);
app.engine('haml', cons.haml);
app.engine('html', hbs.engine);
// set .html as the default extension
app.set('view engine', 'html');
app.get('/', function(req, res){
res.render('index', {
title: 'Consolidate.js: HTML Handlebars'
});
});
//Note: you need to explicitly use the extension
//to use a different render engine.
app.get('/jade', function(req, res){
res.render('index.jade', {
title: 'Consolidate.js: Jade'
});
});
app.get('/haml', function(req, res){
res.render('index.haml', {
title: 'Consolidate.js: Haml'
});
});
app.listen(3000);
console.log('Express server listening on port 3000');