Node.js – Hoch performante Webapps mit JavaScript

Node.js ist ein in JavaScript zu programmierender Web-Server, der es erlaubt, die Entwicklung von Frontend und Backend einer Web-Applikation in der gleichen Sprache auszuführen.

Mit Node.js lässt sich mittlerweile allerhand anstellen. Die Installation ist spielend leicht und ein erster Server ist auch schnell konfiguriert:

var http = require('http');

var server = http.createServer(function(req, res) {
    res.end('Hello World!');
});

server.listen(8910);

In diesem einfachen Beispiel passieren fünf relevante Dinge:

  • Das Modul http eingebunden, welches in der Node-Installation direkt vorhanden ist (Standard-Modulübersicht: http://nodejs.org/api/).
  • Ein Http-Server wird erzeugt.
  • Dem Server wird ein Request-Handler mit übergeben, welcher bei jeder Anfrage aufgerufen wird und diese verarbeitet.
  • Die Response wird mit res.end() gleichzeitig mit dem Text „Hello World!“ befüllt und für die Auslieferung freigegeben.
  • Dem Server wird angewiesen, auf dem Port 8910 zu lauschen.

Der Server wird mittels node server.js gestartet. Ein curl -i localhost:8910 liefert uns die folgende HTTP-Antwort:

HTTP/1.1 200 OK
Date: Fri, 30 Aug 2013 12:32:15 GMT
Connection: keep-alive
Transfer-Encoding: chunked

Hello World!

Fertig ist unser Hello World HTTP-Server.

Module für Node-Apps

Was den Server besonders attraktiv macht ist das mitgelieferte Modul npm. Hiermit lassen sich im Nu Abhängigkeiten zu anderen Modulen einbinden. Diese erweitern die Fähigkeiten des Webservers beträchtlich und daher möchte ich an dieser Stelle eine kurze Übersicht vom zwei der meines Erachtens wichtigsten Erweiterungen geben.

Connect

Connect ist ein Framework zum Einbinden von Middleware (hier auch als Plugins bezeichnet) und ist der Quasi-Industriestandard für diesen Zweck. Es bringt bereits viele Plugins mit, welche mittels der Funktion use(<plugin>()) in die Applikation eingebunden werden können. Unter ihnen ist beispielsweise ein Body-Parser, welcher dafür sorgt, dass JSON- und URL-Encodierte Daten als body-Property an das Request-Objekt angehängt werden.

var connect = require('connect');
var app = connect();

app.use(connect.bodyParser());
app.use(function(req, res) {
    res.writeHead(200, {'Content-Type': 'application/json'});
    res.end(JSON.stringify(req.body, false, 4));
});

app.listen(8910);

Wenn wir nun den Server starten und curl -id ‚{„node.js“:{„coolness“:“100%“}}‘ -H „Content-Type: application/json“ localhost:8910 ausführen, bekommen wir als Antwort:

HTTP/1.1 200 OK
Content-Type: application/json
Date: Fri, 30 Aug 2013 14:47:19 GMT
Connection: keep-alive
Transfer-Encoding: chunked

{
    "node.js": {
        "coolness": "100%"
    }
}

Express

Express ist eine Sammlung von Middleware-Plugins für Connect und erbt gleichzeitig davon. Man kann also Express verwenden, ohne Connect explizit einzubinden und erhält ein erweitertes Set an Features.

Das Modul erweitert unter anderem auch das Response-Objekt um die Methode send() und sendfile() , welche das Versenden von Inhalten vor allem durch seine automatische Header-Anpassung erleichtern.

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen