Bei 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 (through
epoll
,kqueue
,/dev/poll
, orselect
) 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
- Download Node.js
- API Dokumentation
- Node.js community wiki
- Node.js auf GitHub
- NPM – Node Package Manager
- Diving into Node.js – Introduction & Installation
- Node.js Step by Step: Introduction
- Understanding the node.js event loop
Mit diesen Links sollte es möglich sein, einen Einstieg in Node.js zu schaffen und weiter Know how aufzubauen. Viel Spaß!