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