- Sie können app.render auf Root-Ebene und res.render nur innerhalb einer Route/Middleware aufrufen.
app.render
gibt immer das html in der Callback-Funktion zurück, währendres.render
tut dies nur, wenn Sie die Callback-Funktion als dritten Parameter angegeben haben. Wenn Sieres.render
aufrufen ohne den dritten Parameter/Callback-Funktion wird das gerenderte HTML mit einem Statuscode von 200 an den Client gesendet.
Sehen Sie sich die folgenden Beispiele an.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render
ohne dritten Parameter
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render
mit drittem Parameter
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html);
res.send('done');
})
})
res.render
verwendetapp.render
intern zum Rendern von Vorlagendateien.can't set headers
bedeutet, dass Sie nicht in den Körper gelangen können.res.render()
Die Funktion kompiliert Ihr Template (bitte verwenden Sie keine ejs), fügt dort Locals ein und erstellt aus diesen beiden Dingen eine HTML-Ausgabe.
// Hier stellen Sie ein, dass sich alle Templates in /views
befinden Verzeichnis
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});
Der Vorlagenpfad ist also views/
(erster Teil) + local
(zweiter Teil) + .ejs
(dritter Teil) ===views/local.ejs