Мое приложение Express использует EJS, и мой каталог представлений выглядит так:
./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(); %>
Есть ли у кого-нибудь творческое решение для условного включения представления на основе переменной, переданной в маршрутах?