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.

106voto

dankohn Points 6999

Les réponses à l'autre lien fonctionneront, mais pour servir du HTML, il n'est pas nécessaire d'utiliser un moteur de visualisation, à moins que vous ne vouliez mettre en place un routage funky. Au lieu de cela, il suffit d'utiliser le middleware statique :

app.use(express.static(__dirname + '/public'));

41voto

AnandShanbhag Points 3805

Pour que le moteur de rendu accepte le html au lieu du jade, vous pouvez suivre les étapes suivantes ;

  1. Installer consolider y gorgée dans votre répertoire.

     npm install consolidate
     npm install swig
  2. ajoutez les lignes suivantes à votre fichier app.js

    var cons = require('consolidate');
    
    // view engine setup
    app.engine('html', cons.swig)
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'html');
  3. ajoutez vos modèles de vue au format .html dans le dossier "views". Redémarrez votre serveur node et lancez l'application dans le navigateur.

Bien que cela rende le html sans aucun problème, je vous recommande d'utiliser JADE en l'apprenant. Jade est un moteur de modèles étonnant et son apprentissage vous aidera à obtenir un meilleur design et une meilleure évolutivité.

34voto

Sudhanshu Gupta Points 1741

Dans votre apps.js, ajoutez simplement

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'html');

Vous pouvez maintenant utiliser le moteur de vue ejs tout en conservant vos fichiers de vue en .html.

source : http://www.makebetterthings.com/node-js/how-to-use-html-with-express-node-js/

Vous devez installer ces deux paquets :

npm install ejs --save
npm install path --save

Et ensuite, importer les paquets nécessaires :

var path = require('path');

De cette façon, vous pouvez enregistrer vos vues en tant que .html au lieu de .ejs .
Plutôt utile lorsque l'on travaille avec des IDE qui supportent le html mais ne reconnaissent pas ejs.

22voto

Ashish Rawat Points 1674

Aucun moteur de vue n'est nécessaire, si vous voulez utiliser Angular avec un simple fichier html. Voici comment faire : Dans votre route.js fichier :

router.get('/', (req, res) => {
   res.sendFile('index.html', {
     root: 'yourPathToIndexDirectory'
   });
});

18voto

Connor Leech Points 1438

Essayez ceci pour la configuration de votre serveur

app.configure(function() {
    app.use(express.static(__dirname + '/public'));         // set the static files location
    app.use(express.logger('dev'));                         // log every request to the console
    app.use(express.bodyParser());                          // pull information from html in POST
    app.use(express.methodOverride());                      // simulate DELETE and PUT
    app.use(express.favicon(__dirname + '/public/img/favicon.ico'));
});

alors vos fonctions de rappel vers les routes ressembleront à ceci :

function(req, res) {
    res.sendfile('./public/index.html');
};

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