- Du kan kalde app.render på rodniveau og kun res.render inden for en rute/middleware.
app.render
returnerer altid html'en i tilbagekaldsfunktionen, hvorimodres.render
gør det kun, når du har angivet tilbagekaldsfunktionen som din tredje parameter. Hvis du kalderres.render
uden den tredje parameter/tilbagekaldsfunktion sendes den gengivne html til klienten med en statuskode på 200.
Tag et kig på følgende eksempler.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render
uden tredje parameter
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render
med tredje 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
brugerapp.render
internt for at gengive skabelonfiler.can't set headers
betyder, at du ikke kan komme ind i kroppen.res.render()
funktion kompilerer din skabelon (brug venligst ikke ejs), indsætter lokale der og skaber html-output ud af disse to ting.
// her indstiller du at alle skabeloner er placeret i /views
mappe
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});
Så skabelonstien er views/
(første del) + local
(anden del) + .ejs
(tredje del) ===views/local.ejs