- Vous pouvez appeler app.render au niveau racine et res.render uniquement à l'intérieur d'une route/middleware.
app.render
renvoie toujours le html dans la fonction de rappel, alors queres.render
ne le fait que lorsque vous avez spécifié la fonction de rappel comme troisième paramètre. Si vous appelezres.render
sans le troisième paramètre/fonction de rappel, le rendu HTML est envoyé au client avec un code d'état de 200.
Jetez un œil aux exemples suivants.
app.render
app.render('index', {title: 'res vs app render'}, function(err, html) {
console.log(html)
});
res.render
sans troisième paramètre
app.get('/render', function(req, res) {
res.render('index', {title: 'res vs app render'})
})
res.render
avec le troisième paramètre
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
utiliseapp.render
en interne pour rendre les fichiers de modèle.can't set headers
signifie que vous ne pouvez pas entrer dans le corps.res.render()
compile votre modèle (veuillez ne pas utiliser ejs), y insère des éléments locaux et crée une sortie html à partir de ces deux éléments.
// Ici, vous définissez que tous les modèles sont situés dans /views
répertoire
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});
Ainsi, le chemin du modèle est views/
(première partie) + local
(deuxième partie) + .ejs
(troisième partie) ===views/local.ejs