- Можете да извикате 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