Thursday 28 March 2019

Routing with Handlebars and Vhost: Router level defaults?

I'm trying to work out a way to configure Handlebars to use a different set of defaults for each individual router I use, but I'm coming a bit unstuck. I've found loads of ways to set those defaults on an application level (app.locals and app.set('views')), but not on a router level (i.e. something that doesn't persist between requests).​/app.jsvar express = require('express'); var app = express(); var vhost = require('vhost'); var exphbs = require('express-handlebars'); app.use(function(req,res,next) { app.engine('.hbs', exphbs({extname: '.hbs'})); app.set('view engine', '.hbs'); }) var websiteOne = require('./websiteOne/routes.js'); app.use(vhost('websiteone.com', websiteOne)); var websiteTwo = require('./websiteTwo/routes.js'); app.use(vhost('websitetwo.com', websiteTwo)); app.listen(8080); /websiteOne/routes.jsvar express = require('express'); var w1router = express.Router(); w1router.get('/', function(req,res) { res.render('index'); // This should use ./websiteOne/views/default }) ... Loads more routes here module.exports = w1router; /websiteTwo/routes.jsvar express = require('express'); var w2router = express.Router(); w2router.get('/', function(req,res) { res.render('index'); // This should use ./websiteTwo/views/default }) ... And loads more routes here too module.exports = w2router; Obviously I could use the full path inside the res.render for each, but given that I may have lots of different routes, I was hoping there'd be a way to set the view defaults once at the top of each routes.js file.​

Submitted March 28, 2019 at 11:04PM by floodlitworld

No comments:

Post a Comment