Приложение My 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(); %>
Есть ли у кого-нибудь креативное решение для условного включения представления на основе переменной, передаваемой по маршрутам?