Brug af node.js som en simpel webserver

Jeg ønsker at køre en meget simpel HTTP-server. Hver GET-forespørgsel til example.com skal få serveret index.html, men som en almindelig HTML-side (dvs. samme oplevelse som når man læser normale websider).

Ved hjælp af nedenstående kode kan jeg læse indholdet af index.html. Hvordan serverer jeg index.html som en almindelig webside?

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

Et af nedenstående forslag er kompliceret og kræver, at jeg skriver en get-linje for hver ressourcefil (CSS, JavaScript, billeder), jeg vil bruge.

Hvordan kan jeg servere en enkelt HTML-side med nogle billeder, CSS og JavaScript?

Jeg tror, at den del, du mangler lige nu, er, at du sender:

Content-Type: text/plain

Hvis du vil have en webbrowser til at rendere HTML'en, skal du ændre dette til:

Content-Type: text/html
Kommentarer (3)

I stedet for at håndtere en switch-anvisning synes jeg, at det er pænere at slå indholdstypen op fra en ordbog:

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

...

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

Rediger:

Node.js prøveapp Node Chat har den funktionalitet, du ønsker.
I dens README.textfile 3. Trin er det, du leder efter.

step1

  • opret en server, der svarer med hello world på port 8002

trin2

  • opret en index.html og server den

trin3

  • indfør util.js
  • ændre logikken, så enhver statisk fil serveres
  • vise 404 i tilfælde af, at der ikke findes nogen fil

trin4

  • tilføj jquery-1.4.2.js
  • tilføj client.js
  • ændre index.html til at bede brugeren om at angive sit kaldenavn

Her er server.js

Her er util.js

Kommentarer (5)