Node.js ist ein Framework welches auf der JavaScript Engine „V8“ aufgebaut ist, welche aktuell im Google Chrome verwendet wird.
Grund hinter der Entwicklung von Node.js lag darin ein ressourceneffizientes und damit performantes Framework zu bieten, welches „nonblocking I/O“ (bzw. auch Asynchrones I/O genannt) liefert.
Hier ein Beispiel von einem sehr simplen Web-Server:
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}/`);
});
Voraussetzung zum ausführen von diesem Node.js Code ist eine installierte Version von Node.js (siehe https://nodejs.org)
Die aktuellste LTS Version is völlig ausreichend.
Wenn wir diesen Inhalt in eine index.js geben und diese mit
node index.js
ausführen erhalten wir einerseits im Terminal folgenden Output:
Server running at http://127.0.0.1:3000/
Und im Browser erhalten wir folgenden Output:
Vorteile von Node.js
- Basiert auf Javascript und bietet damit eine sehr geringe Einstiegshürde für neue Entwickler da keine neue Syntax gelernt werden muss.
- Node.js ist Event-basierend (siehe Vergleich HIER) und damit sehr performant
- Starke Modularität durch den Node-Package-Manager (NPM)
Nachteile von Node.js
- Rückwärtskompatibilität bei Node.js Version Update nicht wirklich vorhanden
- Da die Event-basierende Loop nur von einem Node.js Thread abgearbeitet wird sind rechenintensive Aufgaben hier nicht empfohlen bzw. effizient
- Asynchrone Code-Schreibweise nicht immer einfach zu erlernen
Source: https://nodejs.org/de/about/