- Je kunt app.render aanroepen op rootniveau en res.render alleen binnen een route/middleware.
app.render
retourneert altijd de html in de callback-functie, terwijlres.render
doet 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.render
gebruiktapp.render
intern om sjabloonbestanden weer te geven.can't set headers
betekent 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