Uso de node.js como servidor web simple

Quiero ejecutar un servidor HTTP muy simple. Cada petición GET a ejemplo.com debería obtener index.html servido pero como una página HTML normal (es decir, la misma experiencia que cuando lees páginas web normales).

Utilizando el siguiente código, puedo leer el contenido de index.html. ¿Cómo puedo servir index.html como una página web normal?

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);

Una de las sugerencias de abajo es complicada y requiere que escriba una línea get para cada archivo de recursos (CSS, JavaScript, imágenes) que quiera utilizar.

¿Cómo puedo servir una sola página HTML con algunas imágenes, CSS y JavaScript?

Creo que la parte que te falta ahora es la de enviar:

Content-Type: text/plain

Si quieres que un navegador web renderice el HTML, debes cambiar esto por:

Content-Type: text/html
Comentarios (3)

En lugar de tratar con una declaración de conmutación, creo que es más ordenado buscar el tipo de contenido desde un diccionario:

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

...

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

Editar:

La aplicación de ejemplo Node.js Node Chat tiene la funcionalidad que deseas.
En su README.textfile 3. Paso es lo que estás buscando.

paso1

  • crear un servidor que responda con hello world en el puerto 8002

paso2

  • crear un index.html y servirlo

paso3

  • introducir util.js
  • cambiar la lógica para que se sirva cualquier archivo estático
  • mostrar 404 en caso de que no se encuentre ningún archivo

paso4

  • añadir jquery-1.4.2.js
  • añadir client.js
  • cambiar index.html para pedir al usuario su nombre de usuario

Aquí está el server.js

Aquí está el util.js

Comentarios (5)