Layouts in Express 3 and EJS

artvolk picture artvolk · Sep 27, 2012 · Viewed 29.9k times · Source

In version 3 of Express some features were removed:

the concept of a "layout" (template engine specific now)
partial() (template engine specific)

Changelog: https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x

The partial() can be changed for EJS own feature called include, but what is the alternative for layouts?

Answer

chovy picture chovy · Sep 27, 2012

I struggled with this as well. So I put up a github project with an example for ejs and dustjs.

https://github.com/chovy/express-template-demo

I'm not sure the difference between a partial and an include, you don't need to explicitly pass data to an include. Not sure why you would want a partial.

But for a layout, you just specify a block like this:

//layout.ejs
<html>
<%- body %>
</html>

//page1.ejs
<% layout('layout') -%>
This is loaded from page 1 and overrides <%- body %> in the layout.ejs.

If anyone wants to add more examples, just submit a pull request.