What is the difference between setting a property on app.locals and calling app.set()?

Viewed 6033

I'm in the process of learning Express - and thinking of the best place to save config style data. Options available are either in app.locals or app.set (settings)... so:

app.locals({ config: {
    name: 'My App',
    domain: 'myapp.com',
    viewPath: __dirname+'/views',
    viewEngine: 'jade'
    port: 3000
} });

app.set('view engine', app.locals.config.viewEngine || 'jade');

This would also allow me to use the following in my views:

<title>#{config.name}</title> // <title>My App</title>

Or the alternative is to use app.set like so:

app.set('name', 'My App');
app.set('domain', 'myapp.com');

... and then use this in the view:

<title>#{settings.name}</title>

I know both methods work, but I'm struggling to determine which is the better method to use. At the moment I'm leaning towards using app.locals, with the extra 'app' namespace as I believe there would be less chance of conflicts with future updates and other modules if using app.set.

4 Answers
Related