node.jsBei Node.js handelt es sich um einen ereignisorientierten JavaScript-Server aufbauend auf Googles V8 JavaScript Engine. Damit kann sowohl auf Client- als auch auf Serverseite mit JavaScript entwickelt werden. Ein Wiederverwenden von Code ist somit ebenfalls einfach möglich.

Node’s goal is to provide an easy way to build scalable network programs. In the „hello world“ web server example, many client connections can be handled concurrently. Node tells the operating system (throughepoll, kqueue, /dev/poll, or select) that it should be notified when a new connection is made, and then it goes to sleep. If someone new connects, then it executes the callback. Each connection is only a small heap allocation.

Der große Unterschied zu Apache, IIS und Co. ist die Tatsache, dass Node.js auf das Konzept der Event Loop setzt und nicht für jeden Request einen eigenen (teuren) Thread abspaltet. Stattdessen wird Code in einem einzigen Thread ausgeführt. Jede I/O Operation hingegen wird asynchron ausgeführt. Eine gute Einführung in dieses Thema wird durch den Artikel Understanding the node.js event loop gegeben.

Einführung – Video

Nachfolgend eine Einführung in Node.js von Ryan Dahl.

Ganz interessant ist auch diese Einführung:

Node.js auf Ubuntu installieren

Installation

Node.js findet sich unter ständiger Weiterentwicklung, d.h. es gibt kein fertiges Paket zu installieren, vielmehr muss man es aktuell selbst kompilieren. Der aktuelle Source kann via github bezogen werden. Für Windows wird in diesem Fall (noch) Cygwin benötigt. Eine genaue Anleitung findet sich im Beitrag Install NodeJS on Windows using Cygwin. Eine Schritt-für-Schritt Anleitung findet sich hier.

Am einfachsten geht’s jedoch über ein Linux bzw. Unix System. Installationshinweise dafür sind unter Building and Installing Node.js zu finden.

HTTP Server (Beispiel)

Mit einigen wenigen Zeilen ist ein HTTP Server möglich, der ein Hello World ausgibt:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

Hilfreiche Links

Mit diesen Links sollte es möglich sein, einen Einstieg in Node.js zu schaffen und weiter Know how aufzubauen. Viel Spaß!

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.