- Можете да извикате app.render на основно ниво и res.render само вътре в route/middleware.
app.render
винаги връща html във функцията за обратно извикване, докатоres.render
прави това само когато сте посочили функцията за обратно извикване като трети параметър. Ако извикатеres.render
без трети параметър/функция за обратно извикване, изобразеният html се изпраща на клиента с код на състоянието 200.
Разгледайте следните примери.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render
без трети параметър
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render
с трети параметър
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
използваapp.render
вътрешно за изобразяване на шаблонни файлове.can't set headers
означава, че не можете да влезете в тялото.res.render()
функцията компилира вашия шаблон (моля, не използвайте ejs), вмъква локални там и създава html изход от тези две неща.
// тук задавате всички шаблони да се намират в /views
директория
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});
И така, пътят на шаблона е views/
(първа част) + local
(втора част) + .ejs
(трета част) ===views/local.ejs