Usare node.js come un semplice server web

Voglio eseguire un server HTTP molto semplice. Ogni richiesta GET a example.com dovrebbe ricevere index.html servito, ma come una normale pagina HTML (cioè, la stessa esperienza di quando si leggono normali pagine web).

Usando il codice qui sotto, posso leggere il contenuto di index.html. Come faccio a servire index.html come una normale pagina web?

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

Un suggerimento qui sotto è complicato e mi richiede di scrivere una linea get per ogni file di risorse (CSS, JavaScript, immagini) che voglio usare.

Come posso servire una singola pagina HTML con alcune immagini, CSS e JavaScript?

Penso che la parte che ti manca in questo momento è che stai inviando:

Content-Type: text/plain

Se vuoi che un browser web renda l'HTML, dovresti cambiarlo in:

Content-Type: text/html
Commentari (3)

Piuttosto che avere a che fare con una dichiarazione di switch, penso che sia più pulito cercare il tipo di contenuto da un dizionario:

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

...

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

Modifica:

L'applicazione di esempio Node.js Node Chat ha la funzionalità che vuoi.
Nel suo README.textfile 3. Step c'è quello che stai cercando.

passo1

creare un server che risponda con hello world sulla porta 8002

passo2

creare un index.html e servirlo

step3

  • introdurre util.js
  • cambiare la logica in modo che qualsiasi file statico sia servito
  • mostrare 404 nel caso in cui nessun file venga trovato

passo4

aggiungere jquery-1.4.2.js

  • aggiungi client.js
  • cambia index.html per chiedere all'utente il nickname

Ecco il server.js

Ecco il util.js

Commentari (5)