Views are used when rendering a response to a request. Views are processed by template engines which compile the view and substitute variables to produce the final output.
Locomotive delegates all rendering to Express, ensuring seamless compatibility with EJS, Jade, and the many other compliant template engines.
By default, Locomotive uses EJS as its
template engine. That is easily changed by setting the view engine
option in
config/initializers/02_views.js
:
this.set('view engine', 'jade');
When rendering, Locomotive finds templates using a name.format.engine
convention, resulting in file names such as show.html.ejs
.
Some template engines, such as Jade, internally locate layouts using just the
engine as a extension (for example, layout.jade
). This results in a mixed
set of conventions that can cause confusion.
To avoid this, a format can be mapped to an explicit convention:
this.format('html', { extension: '.jade' })
With that setting in place, a call to render('home')
would render the template
named show.jade
.
Controllers can selectively override the application's default template engine in the call to render:
PhotosController.show = function() {
this.render({ engine: 'ejs' });
}
This feature is not widely used, but can come in handy when one or two pages in your site follow a different layout or are self-contained in an EJS template.