node.js - script - Pasar variable a EJS incluir
ejs wikipedia (3)
Tengo un encabezado global usado en un par de lugares y estaba tratando de definir su ubicación en una variable que podría pasarse al renderizar una plantilla.
Algo como:
var headerLocation = ''some/location/header.ejs'';
res.render( viewDir + ''/index'', {
header: headerLocation
} );
Y en un archivo de plantilla:
<% include header %>
encabezado siendo el valor pasado con el render.
No parece ser posible, pero tal vez me perdí algo, así que pensé que lo pediría aquí.
EDITAR:
Esto se menciona en los comentarios de las respuestas a continuación, pero para resumir, ahora está disponible en la versión 2 de EJS.
Consulte aquí: https://github.com/mde/ejs#includes Y discusión relacionada aquí: https://github.com/tj/ejs/issues/93
Aquí hay un código de demostración que puede incluir dinámicos.
Ver
<div flex class="main-container">
<%- include(page) %>
</div>
Enrutador
router.get(''/'', function (req, res, next) {
res.render(''pages/index'', {
page: ''home''
});
});
Aunque es una vieja pregunta, responderla por el bien de los demás.
Según la documentación de github, parece que EJS no tiene noción de bloques, solo incluye tiempo de compilación. Dado que su tiempo de compilación incluye, es necesario codificar la ubicación.
Así que te queda pasar algunas banderas y hacer si se comprueba en el encabezado o analizar el encabezado como html y pasarlo a todas las plantillas ...
Esta característica se ha agregado: si no es una ruta (archivo no encontrado), se evalúa como nombre de variable. https://github.com/visionmedia/ejs/pull/156