Usando o node.js como um simples servidor web

Eu quero rodar um servidor HTTP muito simples. Todo pedido de GET para example.com deve ser servido como index.html mas como uma página HTML regular (ou seja, a mesma experiência de quando você lê páginas web normais).

Utilizando o código abaixo, eu posso ler o conteúdo do index.html. Como posso servir o index.html como uma página web regular?

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

Uma sugestão abaixo é complicada e requer que eu escreva uma linha 'get' para cada recurso (CSS, JavaScript, imagens) que eu quero utilizar.

Como posso servir uma única página HTML com algumas imagens, CSS e JavaScript?

Acho que a parte que estás a perder agora é que estás a enviar:

Content-Type: text/plain

Se você quiser um web browser para renderizar o HTML, você deve mudar isso para:

Content-Type: text/html
Comentários (3)

Em vez de lidar com uma declaração de mudança, acho que é mais fácil consultar o tipo de conteúdo de um dicionário:

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

...

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

Editar:

Node.js sample app Node Chat tem a funcionalidade que você quer.
Nele está README.textfile. 3. Passo é o que você está procurando.

passo1

  • crie um servidor que responda com olá mundo na porta 8002

passo2

  • criar um index.html e servi-lo

passo3

  • introduza o util.js
  • alterar a lógica para que qualquer arquivo estático seja servido
  • mostrar 404 no caso de nenhum arquivo ser encontrado

passo4

  • adicionar jquery-1.4.2.js
  • adicionar client.js
  • altere index.html para solicitar um apelido ao usuário

Aqui está o server.js

Aqui está o util.js

Comentários (5)