Pregunta

Cuando te renderás jade plantillas en express puede configurar su aplicación con 'view options', { layout: true } y las plantillas representadas se enchufarán automáticamente al body Local de la plantilla de diseño.

Estoy tratando de lograr el comportamiento equivalente que representa archivos de Node.js, pero sin el marco Express (solo estoy construyendo archivos estáticos como parte de una tubería más grande).

Parece que hay dos opciones:

  • Cargue tanto la plantilla principal como el diseño, convierta en funciones, primero represente la plantilla y luego pase los resultados a la función de diseño
  • Use la herencia de plantilla estándar y la estructura de bloques, pero luego estoy usando explícitamente bloques con nombre

¿Son estas las únicas opciones (que, bastante justas, siguen siendo increíbles), o me estoy perdiendo algún truco?


Editar

Aquí hay un corte aproximado de la primera opción en caso de que alguien esté interesado:

// 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);
¿Fue útil?

Solución

Creo que la respuesta es "no", no te estás perdiendo ningún truco. Las dos opciones que resume me parecen las dos formas más directas de usar Jade para generar su archivo. Por supuesto, también hay muchos enfoques sin Jade. Por ejemplo, podría fusionar el contenido con el platos Enfoque, buen viejo String.replace, o divida su diseño en archivos de fragmento de pie de página de anuncios de encabezado separados y simplemente concatenelos en el orden de la cabeza, el cuerpo, el pie.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top