- App.render můžete volat na kořenové úrovni a res.render pouze v rámci trasy/middleware.
app.render
vždy vrací html ve funkci zpětného volání, zatímcores.render
provede to pouze tehdy, když jste jako třetí parametr zadali funkci zpětného volání. Pokud zavoláteres.render
bez třetího parametru/funkce zpětného volání je vykreslený html odeslán klientovi se stavovým kódem 200.
Podívejte se na následující příklady.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render
bez třetího parametru
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render
se třetím parametrem
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
používáapp.render
interně k vykreslení souborů šablon.can't set headers
znamená, že se nemůžete dostat do těla.res.render()
funkce zkompiluje vaši šablonu (nepoužívejte prosím ejs), vloží tam locals a vytvoří html výstup z těchto dvou věcí.
// zde nastavíte, aby se všechny šablony nacházely v /views
adresář
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});
Cesta šablony je tedy views/
(první část) + local
(druhá část) + .ejs
(třetí část) ===views/local.ejs