Al representar plantillas jade en express, puede configurar su aplicación con 'view options', { layout: true }
y las plantillas renderizadas se conectarán automáticamente al body
local de la plantilla de diseño.Renderizar plantilla de jade con diseño (sin expreso)
Estoy tratando de lograr el comportamiento equivalente de renderizar archivos desde node.js, pero sin el marco expreso (estoy construyendo archivos estáticos como parte de una tubería más grande).
Parece que hay dos opciones:
- de carga tanto de la plantilla principal y el diseño, se convierten en funciones, hacer que la plantilla primero y luego pasar los resultados a la función de diseño
- Use la plantilla estándar herencia y estructura de bloques, pero luego estoy usando explícitamente bloques con nombre
¿Son estas las únicas opciones (que, por supuesto, todavía son impresionantes), o me estoy perdiendo algún truco?
Editar
Aquí está un primer corte de la primera opción en caso de que a alguien le interesa:
// Load jade
var jade = require('jade');
// Load actual template text
var layout = fs.readFileSync('layout-path', 'utf8')
tpl = fs.readFileSync('tpl-path', 'utf8');
// Compile template rendering function
layout = jade.compile(layout, { pretty: true, filename: 'layout-path' });
tpl = jade.compile(tpl, { pretty: true, filename: 'tpl-path' });
// Render jade template, passing in the info
var output = layout({ body: tpl({ local1: some_var, local2: some_var }) }
// Write rendered content to file
fs.writeFileSync('output.html', output);
Creo que Express 3.0 elimina el diseño (como habilitado por defecto, al menos) a favor de la herencia de plantillas con bloques con nombre, por lo que tal vez esto pueda ayudar en su decisión: http://groups.google.com/group/express -js/browse_thread/thread/2ec558510be6d0a4 (y vea también el stub generado por express.js cuando inicialice un nuevo proyecto: https://github.com/visionmedia/express/blob/master/bin/express). – mna
@PuerkitoBio Gracias por la información; vale la pena señalar, pero mi verdadera pregunta es * ¿son estas las únicas formas de hacerlo *? Las personas que juntan este tipo de cosas a menudo incluyen un cortocircuito para casos de uso común. ¡No siempre soy lo suficientemente inteligente como para encontrarlos! –
@AJ. gracias por el fragmento. –