- Możesz wywołać app.render na poziomie głównym, a res.render tylko wewnątrz trasy/oprogramowania pośredniczącego.
app.render
zawsze zwraca html w funkcji zwrotnej, podczas gdyres.render
robi to tylko wtedy, gdy określisz funkcję zwrotną jako trzeci parametr. Jeśli zadzwoniszres.render
bez trzeciego parametru/funkcji wywołania zwrotnego renderowany html jest wysyłany do klienta z kodem stanu 200.
Spójrz na poniższe przykłady.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render
bez trzeciego parametru
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render
z trzecim 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
używaapp.render
wewnętrznie do renderowania plików szablonów.can't set headers
oznacza, że nie możesz dostać się do ciała.res.render()
funkcja kompiluje twój szablon (proszę nie używać ejs), wstawia tam lokalne i tworzy wyjście html z tych dwóch rzeczy.
// tutaj ustawiasz, że wszystkie szablony znajdują się w /views
katalog
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});
Ścieżka szablonu to views/
(pierwsza część) + local
(druga część) + .ejs
(część trzecia) ===views/local.ejs