Korzystanie z interpolacji w Node.js EJS obejmuje
Moja aplikacja Express używa EJS, a mój katalog wyświetleń wygląda tak:
./views
./contents
home.ejs
./includes
header.ejs
footer.ejs
layout.ejs
Próbuję załadować home.ejs w moim widoku layout.ejs warunkowo na podstawie lokalnej zmiennej o nazwiecontents
w moich route / index.js. Ten plik wygląda tak:
/*
* GET home page.
*/
exports.index = function(req, res){
res.render('index', { title: 'Home', contents: 'home.ejs' });
};
Idealnie mogłabym po prostu napisać (w layout.ejs):
<% include '/contents' + contents %>
gdzie końcowa „zawartość” jest zmienną lokalną, która zawiera względną ścieżkę do tekstu treści do załadowania.
Ale niestety, wydaje się, że EJS zawsze interpretuje tekst poinclude
dyrektywa dosłownie i nie ma szans, aby zdarzyła się jakakolwiek magia interpolacji.
Próbowałem też bezskutecznie:
<% function yieldContent(contents){ %>
<% var contentPath = 'contents/' + contents; %>
<% include contentPath %>
<% }; %>
<% loadContent(); %>
Czy ktoś ma kreatywne rozwiązanie warunkowego włączenia widoku opartego na zmiennej przekazywanej na trasach?