- Możesz wywołać app.render na poziomie głównym, a res.render tylko wewnątrz trasy/oprogramowania pośredniczącego.
app.renderzawsze zwraca html w funkcji zwrotnej, podczas gdyres.renderrobi to tylko wtedy, gdy określisz funkcję zwrotną jako trzeci parametr. Jeśli zadzwoniszres.renderbez 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.renderużywaapp.renderwewnętrznie do renderowania plików szablonów.can't set headersoznacza, ż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