- Puoi chiamare app.render a livello di root e res.render solo all'interno di una route/middleware.
app.renderrestituisce sempre l'html nella funzione di callback, mentreres.renderlo fa solo quando hai specificato la funzione di callback come terzo parametro. Se chiamires.rendersenza il terzo parametro/funzione di callback l'html reso viene inviato al client con un codice di stato pari a 200.
Dai un'occhiata ai seguenti esempi.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render senza terzo parametro
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render con terzo parametro
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html);
res.send('done');
})
})
res.renderutilizzaapp.renderinternamente per eseguire il rendering dei file modello.can't set headerssignifica che non puoi entrare nel corpo.res.render()la funzione compila il tuo modello (per favore non usare ejs), inserisce i locali lì e crea un output html da queste due cose.
// qui imposti che tutti i modelli si trovano in /views directory
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});
Quindi, il percorso del modello è views/ (prima parte) + local (seconda parte) + .ejs (terza parte) ===views/local.ejs