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.
emvc delegates all rendering to Express, ensuring seamless compatibility with EJS, Jade, and the many other compliant template engines.
By default, emvc 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, emvc 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.