Использование интерполяции в Node.js EJS включает

Мое приложение Express использует EJS, и мой каталог views выглядит следующим образом:

./views
  ./contents
    home.ejs
  ./includes
    header.ejs
    footer.ejs
  layout.ejs

Я пытаюсь загрузить home.ejs в моем представлении layout.ejs условно на основе локальной переменной с именемcontents в моих маршрутах / index.js. Этот файл выглядит так:

/*
 * GET home page.
 */

exports.index = function(req, res){
  res.render('index', { title: 'Home', contents: 'home.ejs' });
};

В идеале я мог бы просто написать (в layout.ejs):

<% include '/contents' + contents %>

где завершающий «контент» является локальной переменной, которая содержит относительный путь к основному тексту для загрузки.

Но, увы, похоже, EJS всегда интерпретирует текст послеinclude Директива буквально, и нет никакой возможности для какой-либо магии интерполяции.

Я также пытался безрезультатно:

<% function yieldContent(contents){ %>
  <% var contentPath = 'contents/' + contents; %>
  <% include contentPath %>
<% }; %>
<% loadContent(); %>

У кого-нибудь есть творческое решение для условного включения представления, основанного на переменной, переданной в маршрутах?

Ответы на вопрос(4)

Ваш ответ на вопрос