Verwenden der Interpolation in Node.js EJS-Includes
Meine Express-App verwendet EJS und mein Ansichtsverzeichnis sieht folgendermaßen aus:
./views
./contents
home.ejs
./includes
header.ejs
footer.ejs
layout.ejs
Ich versuche, home.ejs in meine layout.ejs-Ansicht zu laden, die auf einer lokalen Variablen namens basiertcontents
in meinen routes / index.js. Diese Datei sieht so aus:
/*
* GET home page.
*/
exports.index = function(req, res){
res.render('index', { title: 'Home', contents: 'home.ejs' });
};
Im Idealfall könnte ich einfach schreiben (in layout.ejs):
<% include '/contents' + contents %>
Dabei ist der nachfolgende "Inhalt" die lokale Variable, die den relativen Pfad zum zu ladenden Nachrichtentext enthält.
Aber leider scheint es, dass EJS immer den Text interpretiert, der einem folgtinclude
Direktive buchstäblich, und es gibt keine Chance für eine Interpolation Magie passieren.
Ich habe auch erfolglos versucht:
<% function yieldContent(contents){ %>
<% var contentPath = 'contents/' + contents; %>
<% include contentPath %>
<% }; %>
<% loadContent(); %>
Hat jemand eine kreative Lösung für das bedingte Einschließen einer Ansicht, die auf einer in Routen übergebenen Variablen basiert?