- Vous pouvez appeler app.render au niveau racine et res.render uniquement à l'intérieur d'une route/middleware.
app.renderrenvoie toujours le html dans la fonction de rappel, alors queres.renderne le fait que lorsque vous avez spécifié la fonction de rappel comme troisième paramètre. Si vous appelezres.rendersans 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.renderutiliseapp.renderen interne pour rendre les fichiers de modèle.can't set headerssignifie 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