Utiliser node.js comme un simple serveur web

Je veux faire tourner un serveur HTTP très simple. Chaque requête GET vers exemple.com devrait recevoir index.html mais comme une page HTML normale (c'est-à-dire, la même expérience que lorsque vous lisez des pages web normales).

En utilisant le code ci-dessous, je peux lire le contenu de index.html. Comment puis-je servir index.html comme une page web normale ?

var http = require('http');
var fs = require('fs');
var index = fs.readFileSync('index.html');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end(index);
}).listen(9615);

Une suggestion ci-dessous est compliquée et me demande d'écrire une ligne get pour chaque fichier de ressources (CSS, JavaScript, images) que je veux utiliser.

Comment puis-je servir une seule page HTML avec quelques images, CSS et JavaScript ?

Je pense que ce qui te manque en ce moment, c'est que tu envoies :

Content-Type: text/plain

Si vous voulez qu'un navigateur web rende le HTML, vous devez changer cela en :

Content-Type: text/html
Commentaires (3)

Plutôt que d'utiliser une instruction de commutation, je pense qu'il est plus judicieux de rechercher le type de contenu dans un dictionnaire :

var contentTypesByExtension = {
    'html': "text/html",
    'js':   "text/javascript"
};

...

    var contentType = contentTypesByExtension[fileExtension] || 'text/plain';
Commentaires (2)

Modifier :

Node.js exemple d'application Node Chat a la fonctionnalité que vous voulez.
Dans son [README.textfile][1] 3. L'étape est ce que vous recherchez.

step1

  • créer un serveur qui répond avec hello world sur le port 8002

étape 2

  • créer un index.html et le servir

étape 3

  • introduire util.js
  • modifier la logique pour que tout fichier statique soit servi
  • afficher 404 si aucun fichier n'est trouvé

étape 4

  • ajouter jquery-1.4.2.js
  • ajouter client.js
  • modifier index.html pour demander à l'utilisateur son surnom

Voici le fichier [server.js][2].

Voici le fichier [util.js][3].

[1] : https://github.com/neerajdotname/node-chat-in-steps/blob/master/README.textile [2] : https://github.com/neerajdotname/node-chat-in-steps/blob/master/server.js [3] : https://github.com/neerajdotname/node-chat-in-steps/blob/master/util.js

Commentaires (5)