Menü
JavaScript — 29.07.2016 / aktualisiert 29.07.2016

node.js ist trotz seines relativ jungen Alters aus der Welt der Webentwicklung nicht mehr wegzudenken. In diesem kleinen Einführungsartikel erläutere ich, was es damit genau auf sich hat und wofür und wie man es verwenden kann.

node.js ist eine Plattform zum Ausführen von JavaScript auf dem Rechner. Es wird oft als JavaScript-Server oder Plattform zum serverseitigem Ausführen von JavaScript bezeichnet. Das ist allerdings nur ein Teilbereich dessen, wofür man node.js einsetzen kann.

node.js basiert aktuell auf der JavaScript-Engine von Chrome ‒ V8. Die Entwickler von node.js sowie Microsoft arbeiten daran, ebenso eine Version mit ChakraCore (der JS-Engine von Edge) zur Verfügung zu stellen. Es wird neben den JavaScript-Grundfunktionen eine API mitgeliefert, die es u. a. ermöglicht, auf das Dateisystem zuzugreifen, an Netzwerk-Ports zu lauschen usw.

Nach der Installation stehen in der Konsole des jeweiligen Betriebssystems (unterstützt werden Windows, Linux und macOS) zwei neue Befehle zur Verfügung: node und npm.

node

Über node lässt sich eine spezielle JavaScript-Konsole aufrufen. Diese dürfte in aller Regel zu Test- und Debugzwecken dienen (ich persönlich sehe keinen weiteren Nutzen darin). Außerdem lassen sich über bspw. node myScript.js JavaScript-Dateien ausführen ‒ ähnlich wie .cmd-Dateien unter Windows oder Shell-Skripte unter Linux.

node-Server

Beliebt ist es, auf diese Weise Server zu entwickeln. Auf node.js basierende Server sind alleinstehende Server. Im Gegensatz zu bspw. PHP wird kein weiterer Webserver wie Apache oder nginx benötigt. Es gibt bereits fertige statische File-Server basierend auf node.js. Benötigt man also “mal schnell” einen Webserver, der einfach nur HTML- und JavaScript-Dateien ausliefern soll, ist das Paket http-server eine geeignete und vor allem schnelle Alternative.

Das Paket http-server funktioniert wie folgt - vorausgesetzt, node.js wurde bereits installiert:

  1. http-server einmalig global installieren: npm install --global http-server
  2. In das Verzeichnis wechseln, das den Web-Root darstellen soll.
  3. http-server in der Konsole ausführen.
  4. Die URL, die im Browser aufgerufen werden muss, ist in der Konsole ablesbar.

Üblicherweise werden aber API- oder Anwendungs-Server entwickelt. Dafür gibt es auch einige bekannte Frameworks: express und hapi. Mit koa ist ein Weiteres in Entwicklung, das auf neuere JavaScript-Features abzielt.

npm

npm ist der Paket-Manager von node.js. Über ihn können einem aktuellen Projekt Pakete hinzugefügt werden, oder diese global auf dem Rechner installiert werden.

Ein Paket installiert man in ein Projektverzeichnis, wenn ein Projekt direkt von diesem Paket abhängig ist oder es dieses aktiv nutzt. So lässt sich mit npm install jquery die aktuelle Version von jQuery dem aktuellen Projekt hinzufügen. Alle Pakete landen im Ordner node_modules. Über Automatisierungsprozesse lassen sich die benötigten Dateien aus diesem Ordner ziehen und bspw. in eine einzige JavaScript-Datei zusammenfassen, um sie anschließend auf die Produktivumgebung schieben zu können.

Befindet sich in einem Projektverzeichnis die Datei package.json, können in dieser alle Pakete eingetragen werden, die das aktulle Projekt benötigt. Dadurch müssen die Abhängigkeiten nicht in eine eventuelle Versionskontrolle mitübertragen werden. Mit npm install --save jquery lässt sich bei einer Installation die Abhängigkeit automatisch in die package.json eintragen.

Ein Paket installiert man global, wenn es auf dem gesamten Rechner verfügbar sein soll. Dabei handelt es sich in der Regel um Konsolen-Befehle oder CLIs, wie das vorhin gezeigte http-server. Einen solchen Befehl registriert man ebenfalls in der bereits genannten package.json.

Obwohl diese Art der Pakete sehr weit verbreitet ist (Grunt, Gulp, Angular CLI, Yeoman, …), kommt dieser Bereich bei der Beschreibung von node.js oft sehr kurz.

Auf dieser Idee basieren der Hauptteil der Automatisierungswerkzeuge zum Prüfen und Testen von Quellcode, zur Übersetzung von TypeScript, SCSS etc. in JavaScript und CSS sowie zur Erstellung der produktivtauglichen Version eines Projekts. Es lässt sich aber noch weit mehr damit anstellen.

Und als kleine Notiz am Rande: Mit mdcli habe ich bereits mein eigenes Paket veröffentlicht. Dabei handelt es sich um einen Konsolen-Befehl (mdown my-text.md [ my-style.css ]), über den man eine Markdown-Datei einfach in eine HTML-Datei umwandeln kann. Optional lässt sich eine CSS-Datei angeben, die im erzeugten HTML zusätzlich eingebunden wird.

Andreas Linnert


Danke

Lizenz

Dieser Artikel ist lizenziert unter einer Creative Commons Namensnennung 4.0 International Lizenz.


Kommentare