Usando a interpolação dentro do Node.js, o EJS inclui
Meu aplicativo Express está usando o EJS e meu diretório de visualizações é semelhante ao seguinte:
./views
./contents
home.ejs
./includes
header.ejs
footer.ejs
layout.ejs
Eu estou tentando carregar home.ejs na minha visualização layout.ejs condicionalmente com base em uma variável local chamadacontents
em minhas rotas / index.js. Esse arquivo é assim:
/*
* GET home page.
*/
exports.index = function(req, res){
res.render('index', { title: 'Home', contents: 'home.ejs' });
};
Idealmente, eu poderia simplesmente escrever (em layout.ejs):
<% include '/contents' + contents %>
onde o "conteúdo" final é a variável local que contém o caminho relativo para o texto do corpo para carregar.
Mas, infelizmente, parece que o EJS sempre interpreta o texto seguindo umainclude
diretiva literalmente, e não há chance de qualquer magia de interpolação acontecer.
Eu também tentei sem sucesso:
<% function yieldContent(contents){ %>
<% var contentPath = 'contents/' + contents; %>
<% include contentPath %>
<% }; %>
<% loadContent(); %>
Alguém tem uma solução criativa para incluir condicionalmente uma exibição com base em uma variável passada em rotas?