151 votes

Comment utiliser le HTML comme moteur d'affichage dans Express ?

J'ai essayé ce simple changement à partir de la graine et j'ai créé les fichiers .html correspondants (par exemple index.html).

//app.set('view engine', 'jade');
app.set('view engine', 'html');

et ce dossier est resté le même :

exports.index = function(req, res){
  res.render('index');
};

mais en cours d'exécution, j'obtiens

Erreur 500 : Impossible de trouver le module 'html'.

Ma seule option est-elle d'utiliser 'ejs' ? Mon intention était d'utiliser du HTML simple en conjonction avec AngularJS.

10voto

didinko Points 372

Je recommande d'utiliser https://www.npmjs.com/package/express-es6-template-engine - un moteur de modèles extrêmement léger et rapide comme l'éclair. Le nom est un peu trompeur car il peut aussi fonctionner sans expressjs.

Les éléments de base nécessaires à l'intégration express-es6-template-engine dans votre application sont assez simples et faciles à mettre en œuvre :

const express = require('express'),
  es6Renderer = require('express-es6-template-engine'),
  app = express();

app.engine('html', es6Renderer);
app.set('views', 'views');
app.set('view engine', 'html');

app.get('/', function(req, res) {
  res.render('index', {locals: {title: 'Welcome!'}});
});

app.listen(3000);

Voici le contenu de la index.html situé dans votre répertoire "views" :

<!DOCTYPE html>
<html>
<body>
    <h1>${title}</h1>
</body>
</html>

7voto

Shivam Chhetri Points 258

Commentez le middleware pour le html c'est-à-dire

//app.set('view engine', 'html');

Utilisez plutôt :

app.get("/",(req,res)=>{
    res.sendFile("index.html");
});

5voto

GideonMax Points 356

Les fichiers Html n'ont pas besoin d'être rendus.
ce qu'un moteur de rendu fait, c'est transformer un fichier qui n'est pas un fichier Html en un fichier Html.
pour envoyer un fichier Html, il suffit de le faire :

res.sendFile("index.html");

vous devrez peut-être utiliser __dirname+"/index.html" pour que l'express connaisse le chemin exact.

4voto

JerryFZhang Points 41

Les fichiers HTML peuvent être rendus à l'aide du moteur ejs :

app.set('view engine', 'ejs');

Et assurez-vous que vos fichiers sous "/views" sont nommés avec ".ejs".

Par exemple "index.ejs".

4voto

Dinesh Kanivu Points 1997

La réponse est très simple. Vous devez utiliser app.engine('html') pour rendre les pages *.html. Essayez ceci. Cela devrait résoudre le problème.

app.set('views', path.join(__dirname, 'views'));
**// Set EJS View Engine**
app.set('view engine','ejs');
**// Set HTML engine**
app.engine('html', require('ejs').renderFile);

le fichier .html fonctionnera

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X