Node.js

Aus besserwiki.de
Node.js
Node.js logo.svg
Ursprüngliche(r) Autor(en)Ryan Dahl
Entwickler(n)OpenJS-Stiftung
Erste Veröffentlichung27. Mai 2009; vor 13 Jahren
Geschrieben inC, C++, JavaScript
Betriebssystemez/OS, Linux, macOS, Microsoft Windows, SmartOS, FreeBSD, OpenBSD, IBM AIX
TypLaufzeitumgebung
LizenzMIT-Lizenz

Node.js ist eine quelloffene, plattformübergreifende Back-End-JavaScript-Laufzeitumgebung, die auf der V8-Engine läuft und JavaScript-Code außerhalb eines Webbrowsers ausführt. Sie wurde entwickelt, um skalierbare Netzwerkanwendungen zu erstellen. Mit Node.js können Entwickler JavaScript zum Schreiben von Befehlszeilentools und für das serverseitige Scripting verwenden. Dabei werden Skripte serverseitig ausgeführt, um dynamische Webseiteninhalte zu erzeugen, bevor die Seite an den Webbrowser des Benutzers gesendet wird. Node.js repräsentiert somit ein "JavaScript everywhere"-Paradigma, das die Entwicklung von Webanwendungen um eine einzige Programmiersprache herum vereinheitlicht, anstatt unterschiedliche Sprachen für serverseitige und clientseitige Skripte zu verwenden.

Node.js hat eine ereignisgesteuerte Architektur, die asynchrone E/A ermöglicht. Diese Designentscheidungen zielen darauf ab, den Durchsatz und die Skalierbarkeit in Webanwendungen mit vielen Ein-/Ausgabeoperationen sowie für Echtzeit-Webanwendungen (z. B. Echtzeit-Kommunikationsprogramme und Browserspiele) zu optimieren.

Das verteilte Entwicklungsprojekt Node.js wurde früher von der Node.js Foundation verwaltet und hat sich nun mit der JS Foundation zur OpenJS Foundation zusammengeschlossen, die durch das Collaborative Projects-Programm der Linux Foundation unterstützt wird.

Zu den Unternehmensanwendern von Node.js-Software gehören GoDaddy, Groupon, IBM, LinkedIn, Microsoft, Netflix, PayPal, Rakuten, SAP, Walmart, Yahoo! und Amazon Web Services.

Node.js
Basisdaten
Aktuelle Version 18.6.0 (Current)
13. Juli 2022

16.16.0 (LTS)
7. Juli 2022 14.20.0 (LTS)
7. Juli 2022

Kategorie Framework, Interpreter
nodejs.org

Geschichte

Ryan Dahl, der Erfinder von Node.js, im Jahr 2010

Node.js wurde ursprünglich von Ryan Dahl im Jahr 2009 geschrieben, etwa dreizehn Jahre nach der Einführung der ersten serverseitigen JavaScript-Umgebung, LiveWire Pro Web von Netscape. Die erste Version unterstützte nur Linux und Mac OS X. Die Entwicklung und Wartung wurde von Dahl geleitet und später von Joyent gesponsert.

Dahl kritisierte die begrenzten Möglichkeiten des 2009 am weitesten verbreiteten Webservers, Apache HTTP Server, viele gleichzeitige Verbindungen (bis zu 10.000 und mehr) zu bewältigen, sowie die gängige Art der Codeerstellung (sequenzielle Programmierung), bei der der Code entweder den gesamten Prozess blockierte oder im Falle gleichzeitiger Verbindungen mehrere Ausführungsstapel implizierte.

Dahl stellte das Projekt auf der ersten europäischen JSConf am 8. November 2009 vor. Node.js kombinierte die V8-JavaScript-Engine von Google, eine Ereignisschleife und eine E/A-API auf niedriger Ebene.

Im Januar 2010 wurde ein Paketmanager für die Node.js-Umgebung namens npm eingeführt. Der Paketmanager erleichtert es Programmierern, den Quellcode von Node.js-Paketen zu veröffentlichen und weiterzugeben, und soll die Installation, Aktualisierung und Deinstallation von Paketen vereinfachen.

Im Juni 2011 implementierten Microsoft und Joyent eine native Windows-Version von Node.js. Der erste Node.js-Build mit Unterstützung für Windows wurde im Juli 2011 veröffentlicht.

Im Januar 2012 trat Dahl zurück und beauftragte seinen Mitarbeiter und npm-Erfinder Isaac Schlueter mit der Leitung des Projekts. Im Januar 2014 gab Schlueter bekannt, dass Timothy J. Fontaine das Projekt leiten würde.

Im Dezember 2014 gründete Fedor Indutny io.js, eine Abspaltung von Node.js. Aufgrund des internen Konflikts um die Führung von Joyent wurde io.js als offene Führungsalternative mit einem eigenen technischen Ausschuss gegründet. Im Gegensatz zu Node.js planten die Autoren, io.js mit den neuesten Versionen der Google V8 JavaScript-Engine aktuell zu halten.

Im Februar 2015 wurde die Absicht bekannt gegeben, eine neutrale Node.js Foundation zu gründen. Im Juni 2015 stimmten die Node.js- und io.js-Communities für eine Zusammenarbeit im Rahmen der Node.js Foundation.

Im September 2015 wurden Node.js v0.12 und io.js v3.3 wieder zu Node v4.0 zusammengeführt. Diese Zusammenführung brachte V8 ES6-Funktionen in Node.js und einen langfristigen Support-Release-Zyklus. Seit 2016 empfiehlt die io.js-Website Entwicklern, wieder auf Node.js umzusteigen, und weist darauf hin, dass aufgrund der Verschmelzung keine weiteren Versionen von io.js geplant sind.

Im Februar 2016 wird Node.js 0.10.42 veröffentlicht und im Mai 2022 wird auch die Version Node.js 18.2.0 veröffentlicht.

Im Jahr 2019 fusionierten die JS Foundation und die Node.js Foundation zur OpenJS Foundation.

Der ursprüngliche Entwickler von Node.js, Ryan Dahl, kritisierte das Node.js-Projekt stark. Das Build-System von Node.js (node-gyp) bezeichnete er als den größten Fehler des Projekts. Im Rahmen der JSConf EU 2018 benannte er zehn große Designfehler der Laufzeitumgebung. Das Build-System von Node.js sei immens kompliziert und von gewöhnlichen Programmierern schwer zu handhaben. Damit meinte er Module, die nicht in JavaScript, sondern in anderen Sprachen wie C++ geschrieben wurden und im Build-Prozess kompiliert werden müssen. Auch kritisierte er die Komplexität des Modulsystems. Seine Vorstellung einer neuen Laufzeitumgebung Deno klang wie eine Entschuldigung an all die Programmierer, die unter der von ihm entwickelten Technologie gelitten hatten. Dabei wurden die meisten Design-Entscheidungen nicht von ihm, sondern anderen Entwicklern gefällt. Ryan Dahl war nur bis 2012 Projektleiter von Node.js.

Überblick

Node.js ermöglicht die Erstellung von Webservern und Netzwerktools mithilfe von JavaScript und einer Sammlung von "Modulen", die verschiedene Kernfunktionen behandeln. Es gibt Module für Dateisystem-E/A, Netzwerke (DNS, HTTP, TCP, TLS/SSL oder UDP), Binärdaten (Puffer), Kryptofunktionen, Datenströme und andere Kernfunktionen. Die Module von Node.js verwenden eine API, die die Komplexität beim Schreiben von Serveranwendungen verringern soll.

JavaScript ist die einzige Sprache, die Node.js von Haus aus unterstützt, aber es gibt viele Sprachen, die sich in JavaScript kompilieren lassen. Daher können Node.js-Anwendungen in CoffeeScript, Dart, TypeScript, ClojureScript und anderen geschrieben werden.

Node.js wird in erster Linie zur Erstellung von Netzwerkprogrammen wie Webservern verwendet. Der wichtigste Unterschied zwischen Node.js und PHP besteht darin, dass die meisten Funktionen in PHP bis zur Fertigstellung blockiert werden (Befehle werden erst ausgeführt, nachdem vorherige Befehle beendet wurden), während Node.js-Funktionen nicht blockiert werden (Befehle werden gleichzeitig oder sogar parallel ausgeführt und verwenden Rückrufe, um Fertigstellung oder Fehler zu melden).

Node.js wird offiziell von Linux, macOS und Microsoft Windows 8.1 und Server 2012 (und höher) unterstützt, mit Tier-2-Unterstützung für SmartOS und IBM AIX und experimenteller Unterstützung für FreeBSD. OpenBSD funktioniert ebenfalls, und für IBM i (AS/400) sind LTS-Versionen verfügbar. Der bereitgestellte Quellcode kann auch auf ähnlichen Betriebssystemen wie den offiziell unterstützten erstellt oder von Dritten modifiziert werden, um andere Systeme wie NonStop OS und Unix-Server zu unterstützen.

Plattform-Architektur

Node.js bringt die ereignisgesteuerte Programmierung auf Webserver und ermöglicht die Entwicklung schneller Webserver in JavaScript. Entwickler können skalierbare Server ohne Threading erstellen, indem sie ein vereinfachtes Modell der ereignisgesteuerten Programmierung verwenden, das Callbacks einsetzt, um die Fertigstellung einer Aufgabe zu signalisieren. Node.js verbindet die Einfachheit einer Skriptsprache (JavaScript) mit der Leistungsfähigkeit der Unix-Netzwerkprogrammierung.

Node.js wurde auf Googles V8-JavaScript-Engine aufgebaut, da diese unter der BSD-Lizenz als Open Source zur Verfügung gestellt wurde. Es beherrscht Internet-Grundlagen wie HTTP, DNS und TCP. JavaScript war auch eine bekannte Sprache, was Node.js für die Webentwicklergemeinde zugänglich machte.

Unterstützung durch die Industrie

Es gibt Tausende von Open-Source-Bibliotheken für Node.js, von denen die meisten auf der npm-Website gehostet werden. Es gibt mehrere Entwicklerkonferenzen und Veranstaltungen, die die Node.js-Gemeinschaft unterstützen, darunter NodeConf, Node Interactive und Node Summit sowie eine Reihe regionaler Veranstaltungen.

Die Open-Source-Community hat Web-Frameworks entwickelt, um die Entwicklung von Anwendungen zu beschleunigen. Zu diesen Frameworks gehören Connect, Express.js, Socket.IO, Feathers.js, Koa.js, Hapi.js, Sails.js, Meteor, Derby und viele andere. Es wurden auch verschiedene Pakete für Schnittstellen zu anderen Sprachen oder Laufzeitumgebungen wie Microsoft .NET entwickelt.

Moderne Desktop-IDEs bieten Bearbeitungs- und Debugging-Funktionen speziell für Node.js-Anwendungen. Zu diesen IDEs gehören Atom, Brackets, JetBrains WebStorm, Microsoft Visual Studio (mit Node.js Tools for Visual Studio oder TypeScript mit Node-Definitionen), NetBeans, Nodeclipse Enide Studio (Eclipse-basiert) und Visual Studio Code. Bestimmte webbasierte Online-IDEs unterstützen ebenfalls Node.js, z. B. Codeanywhere, Codenvy, Cloud9 IDE, Koding und der visuelle Flusseditor in Node-RED.

Node.js wird von einer Reihe von Cloud-Hosting-Plattformen wie Jelastic, Google Cloud Platform, AWS Elastic Beanstalk, Joyent und anderen unterstützt.

Veröffentlichungen

Freigabe Status Code-Name Datum der Freigabe Ende der Wartung
0.10.x End-of-Life 2013-03-11 2016-10-31
0.12.x End-of-Life 2015-02-06 2016-12-31
4.x End-of-Life Argon 2015-09-08 2018-04-30
5.x End-of-Life 2015-10-29 2016-06-30
6.x End-of-Life Bor 2016-04-26 2019-04-30
7.x End-of-Life 2016-10-25 2017-06-30
8.x End-of-Life Kohlenstoff 2017-05-30 2019-12-31
9.x End-of-Life 2017-10-01 2018-06-30
10.x End-of-Life Dubnium 2018-04-24 2021-04-30
11.x End-of-Life 2018-10-23 2019-06-01
12.x End-of-Life Erbium 2019-04-23 2022-04-30
13.x End-of-Life 2019-10-22 2020-06-01
14.x Wartung LTS Fermium 2020-04-21 2023-04-30
15.x End-of-Life 2020-10-20 2021-06-01
16.x Aktiv LTS Gallium 2021-04-20 2023-09-11
17.x End-of-Life 2021-10-19 2022-06-01
18.x Aktuell 2022-04-19 2025-04-30
19.x Geplant 2022-10-18 2023-06-01
20.x Geplant 2023-04-18 2026-04-30
Legende:
Alte Version
Ältere Version, die noch gepflegt wird
Neueste Version
Zukünftige Version

Neue Hauptversionen von Node.js werden alle sechs Monate aus dem Master-Zweig von GitHub entfernt. Geradzahlige Versionen werden im April und ungeradzahlige Versionen im Oktober herausgenommen. Wenn eine neue ungerade Version veröffentlicht wird, geht die vorherige gerade Version in den Long Term Support (LTS) über, der dieser Version 18 Monate aktiven Support ab dem Datum gibt, an dem sie als LTS bezeichnet wird. Nach Ablauf dieser 18 Monate erhält eine LTS-Version weitere 12 Monate Wartungsunterstützung. Eine aktive Version erhält einige Wochen, nachdem die Änderungen in die aktuelle Version eingeflossen sind, Rückportierungen ohne Unterbrechung. Eine Wartungsversion erhält nur kritische Fehlerbehebungen und Dokumentationsaktualisierungen. Die LTS-Arbeitsgruppe verwaltet Strategie und Politik in Zusammenarbeit mit dem technischen Lenkungsausschuss der Node.js Foundation.

Technische Details

Node.js ist eine JavaScript-Laufzeitumgebung, die eingehende Anfragen in einer Schleife, der sogenannten Ereignisschleife, verarbeitet.

Interna

Node.js verwendet unter der Haube libuv, um asynchrone Ereignisse zu verarbeiten. Libuv ist eine Abstraktionsschicht für Netzwerk- und Dateisystemfunktionen sowohl auf Windows als auch auf POSIX-basierten Systemen wie Linux, macOS, OSS on NonStop und Unix.

Threading

Node.js arbeitet mit einer Single-Thread-Ereignisschleife, die nicht blockierende E/A-Aufrufe verwendet. Dadurch können Zehntausende von gleichzeitigen Verbindungen unterstützt werden, ohne dass die Kosten eines Thread-Kontextwechsels anfallen. Das Design der gemeinsamen Nutzung eines einzigen Threads für alle Anfragen, die das Beobachtermuster verwenden, ist für die Erstellung hochgradig gleichzeitiger Anwendungen gedacht, bei denen jede Funktion, die E/A durchführt, einen Rückruf verwenden muss. Um die Single-Thread-Ereignisschleife unterzubringen, verwendet Node.js die libuv-Bibliothek, die wiederum einen Thread-Pool mit fester Größe verwendet, der einige der nicht-blockierenden asynchronen E/A-Operationen abwickelt.

Ein Thread-Pool verwaltet die Ausführung von parallelen Aufgaben in Node.js. Der Haupt-Thread-Funktionsaufruf sendet Aufgaben an die gemeinsame Aufgaben-Warteschlange, die Threads im Thread-Pool abrufen und ausführen. Inhärent nicht blockierende Systemfunktionen wie Netzwerke werden in nicht blockierende Sockets auf der Kernel-Seite übersetzt, während inhärent blockierende Systemfunktionen wie Dateieingabe/Ausgabe in ihren eigenen Threads blockierend ausgeführt werden. Wenn ein Thread im Thread-Pool eine Aufgabe abschließt, informiert er den Hauptthread darüber, der seinerseits aufwacht und den registrierten Rückruf ausführt.

Ein Nachteil dieses Single-Thread-Ansatzes ist, dass Node.js keine vertikale Skalierung durch Erhöhung der Anzahl der CPU-Kerne des Rechners, auf dem es läuft, erlaubt, ohne ein zusätzliches Modul wie cluster, StrongLoop Process Manager oder pm2 zu verwenden. Entwickler können jedoch die Standardanzahl von Threads im libuv-Thread-Pool erhöhen. Das Serverbetriebssystem (OS) wird diese Threads wahrscheinlich auf mehrere Kerne verteilen. Ein weiteres Problem ist, dass lang andauernde Berechnungen und andere CPU-gebundene Aufgaben die gesamte Ereignisschleife bis zum Abschluss einfrieren.

Node.js wird mit besonderem Fokus auf die Performance entwickelt. So kommt nonblocking I/O statt standardmäßigem blockierendem I/O zum Einsatz.

V8

V8 ist die JavaScript-Ausführungsmaschine, die ursprünglich für Google Chrome entwickelt wurde. Im Jahr 2008 wurde sie von Google als Open Source zur Verfügung gestellt. V8 ist in C++ geschrieben und kompiliert JavaScript-Quellcode zur Laufzeit in nativen Maschinencode. Seit 2016 umfasst sie auch Ignition, einen Bytecode-Interpreter.

Paketverwaltung

npm ist der vorinstallierte Paketmanager für die Node.js-Serverplattform. Er installiert Node.js-Programme aus der npm-Registry und organisiert die Installation und Verwaltung von Node.js-Programmen Dritter. Die Pakete in der npm-Registry können von einfachen Hilfsbibliotheken wie Lodash bis zu Task-Runnern wie Grunt reichen.

Vereinheitlichte API

Node.js kann mit einem Browser, einer Datenbank, die JSON-Daten unterstützt (z. B. Postgres, MongoDB oder CouchDB), und JSON zu einem einheitlichen JavaScript-Entwicklungsstack kombiniert werden. Durch die Adaption von im Wesentlichen serverseitigen Entwicklungsmustern wie MVC, MVP, MVVM usw. ermöglicht Node.js die Wiederverwendung desselben Modells und derselben Serviceschnittstelle zwischen Client- und Serverseite.

Ereignis-Schleife

Node.js registriert sich beim Betriebssystem, das es über Verbindungen benachrichtigt und einen Rückruf ausgibt. Innerhalb der Node.js-Laufzeit ist jede Verbindung eine kleine Heap-Zuweisung. Traditionell wurde jede Verbindung von relativ schwergewichtigen Betriebssystemprozessen oder Threads bearbeitet. Node.js verwendet aus Gründen der Skalierbarkeit eine Ereignisschleife anstelle von Prozessen oder Threads. Im Gegensatz zu anderen ereignisgesteuerten Servern muss die Ereignisschleife von Node.js nicht explizit aufgerufen werden. Stattdessen werden Rückrufe definiert, und der Server tritt am Ende der Definition des Rückrufs automatisch in die Ereignisschleife ein. Node.js verlässt die Ereignisschleife, wenn keine weiteren Rückrufe ausgeführt werden müssen.

WebAssembly

Node.js unterstützt WebAssembly und bietet ab Node 14 experimentelle Unterstützung für WASI, das WebAssembly System Interface.

Native Bindungen

Node.js bietet eine Möglichkeit, "Add-ons" über eine C-basierte API namens N-API zu erstellen, die verwendet werden kann, um ladbare (importierbare) .node-Module aus in C/C++ geschriebenem Quellcode zu erzeugen. Die Module können direkt in den Speicher geladen und in der JS-Umgebung als einfache CommonJS-Module ausgeführt werden. Die Implementierung der N-API stützt sich auf interne C/C++ Node.js- und V8-Objekte, die den Import (#include) von Node.js-spezifischen Headern in den eigenen Quellcode erfordern. Da die Node.js-Plattform ständig weiterentwickelt wird, ist die API-Kompatibilität Änderungen unterworfen und kann manchmal durch eine neue Version gebrochen werden (als Folge davon müssen Module gegen bestimmte Node.js-Versionen gebaut werden, um korrekt zu funktionieren). Um dieses Problem zu lösen, haben Drittanbieter С/С++-Wrapper auf die API aufgesetzt, die das Problem teilweise entschärfen. Sie vereinfachen die Schnittstellen, aber als Nebeneffekt können sie auch Komplexität einführen, mit der die Betreuer umgehen müssen. Obwohl die Kernfunktionalität von Node.js in einer integrierten JavaScript-Bibliothek liegt, können in C++ geschriebene Module verwendet werden, um die Fähigkeiten zu erweitern und die Leistung von Anwendungen zu verbessern.

Um solche Module zu erstellen, benötigt man einen geeigneten C++-Compiler und die notwendigen Header (letztere werden normalerweise mit Node.js selbst ausgeliefert): gcc, clang oder MSVC++.

Die N-API ist ähnlich wie die Java Native Interface.

Projektleitung

Im Jahr 2015 begannen verschiedene Zweige der größeren Node.js-Community unter der herstellerneutralen Node.js Foundation zu arbeiten. Erklärtes Ziel der Organisation ist es, "eine breite Akzeptanz zu ermöglichen und die Entwicklung von Node.js und anderen verwandten Modulen durch ein offenes Governance-Modell zu beschleunigen, das die Beteiligung und technische Beiträge fördert und einen Rahmen für die langfristige Betreuung durch ein Ökosystem schafft, das in den Erfolg von Node.js investiert."

Das Node.js Foundation Technical Steering Committee (TSC) ist das technische Führungsgremium der Node.js Foundation. Das TSC ist verantwortlich für das Node.js-Kernrepositorium sowie für abhängige und angrenzende Projekte. Im Allgemeinen delegiert das TSC die Verwaltung dieser Projekte an Arbeitsgruppen oder Komitees. Die LTS-Gruppe, die die langfristig unterstützten Versionen verwaltet, ist eine solche Gruppe. Weitere aktuelle Gruppen sind Website, Streams, Build, Diagnostics, i18n, Evangelism, Docker, Addon API, Benchmarking, Post-mortem, Intl, Documentation und Testing.

Im August 2017 trat ein Drittel der TSC-Mitglieder aufgrund eines Streits im Zusammenhang mit dem Verhaltenskodex des Projekts zurück.

Module

Node.js enthält einige Module, die direkt in das Binärpaket kompiliert wurden. Dazu gehören neben dem Modul für asynchronen Netzwerkzugriff auch Adapter für das Dateisystem, Puffer, Zeitgeber und eine allgemein gehaltene Datenstrom-Klasse.

Darüber hinaus können zusätzliche Module eingebunden werden, zum Beispiel über vorkompilierte Dateien mit der Dateiendung .node oder in Form einfacher JavaScript-Dateien. Die JavaScript-Module folgen der CommonJS-Konvention, einem Standard für JavaScript-Systeme, die außerhalb von Browsern betrieben werden, und stellen somit über eine Variable namens exports Zugriff auf Funktionen und Variablen des entsprechenden Moduls her.

Zur Verwaltung der Module gibt es den Paketmanager npm, in dessen Depot sich über 751.000 Pakete (Stand: Juli 2018) befinden. Dieser sorgt unter Berücksichtigung von Abhängigkeiten für die Installation, Aktualisierung und das Kompilieren von Binärmodulen.

Beispiele

HTTP-Server-Version eines Hallo-Welt-Programmes in Node.js, das text/html als Content-Type-Header und den Port 3000 verwendet:

const http = require('http'); <span title="Aus: Deutsche Wikipedia, Abschnitt &quot;Beispiele&quot;" class="plainlinks">[https://de.wikipedia.org/wiki/Node.js#Beispiele <span style="color:#dddddd">ⓘ</span>]</span>

http.createServer(function (req, res) {
  res.writeHead(200, {
    'Content-Type': 'text/html'
  });
  res.write('Hallo Welt');
  res.end();
}).listen(3000);

Als weiteres Beispiel ein einfacher TCP-Server, der auf Port 7000 Daten empfängt, mit „Hallo“ antwortet und dann alle empfangenen Daten unverändert zum Client zurücksendet:

const net = require('net');
const endOfLine = require('os').EOL; <span title="Aus: Deutsche Wikipedia, Abschnitt &quot;Beispiele&quot;" class="plainlinks">[https://de.wikipedia.org/wiki/Node.js#Beispiele <span style="color:#dddddd">ⓘ</span>]</span>

const server = net.createServer(function (socket) {
  socket.setEncoding('utf8'); <span title="Aus: Deutsche Wikipedia, Abschnitt &quot;Beispiele&quot;" class="plainlinks">[https://de.wikipedia.org/wiki/Node.js#Beispiele <span style="color:#dddddd">ⓘ</span>]</span>

  socket.write('Hallo' + endOfLine); <span title="Aus: Deutsche Wikipedia, Abschnitt &quot;Beispiele&quot;" class="plainlinks">[https://de.wikipedia.org/wiki/Node.js#Beispiele <span style="color:#dddddd">ⓘ</span>]</span>

  socket.pipe(socket, {
    end: false
  }); <span title="Aus: Deutsche Wikipedia, Abschnitt &quot;Beispiele&quot;" class="plainlinks">[https://de.wikipedia.org/wiki/Node.js#Beispiele <span style="color:#dddddd">ⓘ</span>]</span>

  socket.on('end', function () {
    socket.end('Auf Wiedersehen' + endOfLine);
  });
}); <span title="Aus: Deutsche Wikipedia, Abschnitt &quot;Beispiele&quot;" class="plainlinks">[https://de.wikipedia.org/wiki/Node.js#Beispiele <span style="color:#dddddd">ⓘ</span>]</span>

server.listen(7000, 'localhost');

Projekte

Eine Liste von ausgewählten Projekten, die auf Node.js basieren:

  • Etherpad Lite, ein kollaborativer Text-Editor
  • PDFKit
  • WebOS von vormals HP
  • StackVM, darauf aufbauend browserling (Cross-Browser-Testen im Browser)
  • NodeBB, eine Echtzeit-Internetforen-Software
  • Ghost, das von der Blog-Software WordPress inspiriert wurde
  • Trello, eine webbasierte Projektmanagementsoftware

Darüber hinaus enthält das offizielle Node.js-Wiki eine Liste von Projekten, Anwendungen und Unternehmen, die Node.js einsetzen.

Auszeichnungen

  • Im Juli 2011 wurde dem Node.js-Entwickler Ryan Dahl auf der Konferenz Oscon einer der O’Reilly Open Source Awards verliehen.
  • InfoWorld zeichnete Node.js im August 2011 mit dem Bossie Award für die beste Open-Source-Software in der Kategorie „Entwicklertools“ aus.