Użycie node.js jako prostego serwera WWW

Chcę uruchomić bardzo prosty serwer HTTP. Każde żądanie GET do example.com powinno dostać index.html serwowany do niego, ale jako zwykła strona HTML (tj. to samo doświadczenie, jak podczas czytania normalnych stron internetowych).

Używając poniższego kodu, mogę przeczytać zawartość index.html. Jak mogę zaserwować index.html jako zwykłą stronę internetową?

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

Jedna z poniższych sugestii jest skomplikowana i wymaga ode mnie napisania linii get dla każdego pliku z zasobami (CSS, JavaScript, obrazy), którego chcę użyć.

Jak mogę obsłużyć pojedynczą stronę HTML z kilkoma obrazkami, CSS i JavaScript?

Myślę, że część, której teraz brakuje, to fakt, że wysyłasz:

Content-Type: text/plain

Jeśli chcesz, aby przeglądarka internetowa renderowała HTML, powinieneś zmienić to na:

Content-Type: text/html
Komentarze (3)

Zamiast zajmować się instrukcją switch, myślę, że jest to bardziej schludne, aby wyszukać typ zawartości ze słownika:

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

...

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

Edytuj:

Node.js przykładowa aplikacja Node Chat posiada funkcjonalność, którą chcesz.
W it's README.textfile 3. Krok jest to, czego szukasz.

step1

  • utwórz serwer, który odpowiada hello world na porcie 8002

krok2

  • utwórz index.html i obsłuż go

krok3

  • wprowadź util.js
  • zmień logikę tak, aby każdy statyczny plik był obsługiwany
  • pokaż 404 w przypadku, gdy nie znaleziono pliku

krok4

  • dodaj jquery-1.4.2.js
  • dodaj client.js
  • zmień index.html, aby pytał użytkownika o pseudonim

Tutaj jest server.js

Tutaj jest util.js

Komentarze (5)