- Puede llamar a app.render en el nivel raíz y res.render solo dentro de una ruta/middleware.
app.rendersiempre devuelve el html en la función de devolución de llamada, mientras queres.renderlo hace solo cuando ha especificado la función de devolución de llamada como su tercer parámetro. Si llama ares.rendersin el tercer parámetro/función de devolución de llamada, el html renderizado se envía al cliente con un código de estado de 200.
Echa un vistazo a los siguientes ejemplos.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render sin tercer parámetro
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render con tercer parámetro
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html);
res.send('done');
})
})
res.renderusaapp.renderinternamente para renderizar archivos de plantilla.can't set headerssignifica que no puedes entrar en el cuerpo.res.render()La función compila su plantilla (no use ejs), inserta locales allí y crea una salida html a partir de esas dos cosas.
// aquí establece que todas las plantillas se encuentran en /views directorio
app.set('views', __dirname + '/views');
// here you set that you're using `ejs` template engine, and the
// default extension is `ejs`
app.set('view engine', 'ejs');
// here you render `local` template
response.render("local", {local: local_json});
Entonces, la ruta de la plantilla es views/ (primera parte) + local (segunda parte) + .ejs (tercera parte) ===views/local.ejs