- Je kunt app.render aanroepen op rootniveau en res.render alleen binnen een route/middleware.
app.renderretourneert altijd de html in de callback-functie, terwijlres.renderdoet dit alleen wanneer u de callback-functie als uw derde parameter hebt opgegeven. Als jeres.render. aanroept zonder de derde parameter/callback-functie wordt de gerenderde html naar de client gestuurd met een statuscode van 200.
Bekijk de volgende voorbeelden.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render zonder derde parameter
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render met derde 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.rendergebruiktapp.renderintern om sjabloonbestanden weer te geven.can't set headersbetekent dat je niet in het lichaam kunt komen.res.render()functie compileert je sjabloon (gebruik geen ejs), voegt daar locals in en maakt html-uitvoer van die twee dingen.
// hier stel je in dat alle sjablonen zich in /views bevinden map
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});
Het sjabloonpad is dus views/ (eerste deel) + local (tweede deel) + .ejs (derde deel) ===views/local.ejs