Mi expreso aplicación está utilizando EJS, y mi directorio de puntos de vista se ve así:Utilizando la interpolación dentro de Node.js EJS incluye
./views
./contents
home.ejs
./includes
header.ejs
footer.ejs
layout.ejs
estoy tratando de cargar home.ejs en mi opinión layout.ejs basado condicionalmente en una variable local llamada contents
en mis rutas/index.js. Ese archivo tiene el siguiente aspecto:
/*
* GET home page.
*/
exports.index = function(req, res){
res.render('index', { title: 'Home', contents: 'home.ejs' });
};
Lo ideal sería que simplemente podría escribir (en layout.ejs):
<% include '/contents' + contents %>
donde el arrastre "contenido" es la variable local que contiene la ruta con relación al cuerpo texto para cargar
Pero, por desgracia, parece que EJS siempre interpreta el texto siguiendo una directiva include
literalmente, y no hay posibilidad de que ocurra ninguna magia de interpolación.
También he intentado en vano:
<% function yieldContent(contents){ %>
<% var contentPath = 'contents/' + contents; %>
<% include contentPath %>
<% }; %>
<% loadContent(); %>
¿Alguien tiene una solución creativa para incluir condicionalmente una vista basada en una variable pasada en rutas?
¿Alguna vez ha resuelto esto? –
+1, ¿qué sentido tiene incluir si no puede ser dinámico? No entiendo cómo usarlo. –