- Du kan anropa app.render på rotnivå och res.render endast inom en rutt/mellanprogramvara.
app.render
returnerar alltid html i callback-funktionen, medanres.render
gör det bara när du har angett återuppringningsfunktionen som din tredje parameter. Om du anroparres.render
utan den tredje parametern/återuppringningsfunktionen skickas den renderade HTML-koden till klienten med en statuskod på 200.
Ta en titt på följande exempel.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render
utan tredje parameter
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render
med tredje parametern
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
använderapp.render
internt för att rendera mallfiler.can't set headers
betyder att du inte kan komma in i kroppen.res.render()
funktionen kompilerar din mall (vänligen använd inte ejs), infogar lokalbeteckningar där och skapar html-utdata av dessa två saker.
// här ställer du in att alla mallar finns i /views
katalogen
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å mallsökvägen är views/
(första delen) + local
(andra delen) + .ejs
(tredje delen) ===views/local.ejs