Zum Inhalt springen

node.js

node.js logo

Node.js ist ein JavaScript-Interpreter mit einer sehr kleinen zusätzlichen C-Bibliothek.

Nach der Lektüre dieses Leitfadens solltest du

  • wissen, wie man packages mit npm installiert
  • in der Lage sein ein Programm zu starten, dass in node.js programmiert ist

Node.js wurde ursprünglich 2009 von Ryan Dahl geschrieben als Kombination zweier bereits existierender Softwarekomponenten:

Dazu kam eine in JavaScript geschriebene Standardbibliothek. 2010 wurde mit npm ein Paketmanager für JavaScript-Bibliotheken ergänzt.

Laut OpenHub bestand das Node-Projekt im Jahr 2023 aus:

  • der Node-Bibliothek: 1,6 Millionen Zeilen JavaScript
  • den Node-Bindings: 2,5 Millionen Zeilen C
  • V8: 2,3 Millionen Zeilen C++
  • libuv: 100.000 Zeilen C

Du schreibst dein Programm in JavaScript, speicherst es in einer Datei:

console.log("Hello Node");

und führst es mit dem node-Befehl aus:

Terminal-Fenster
$ node hello.js
Hello Node

Der npm Paketmanager kann Javascript-Pakete aus dem Internet (von https://www.npmjs.com/) herunterladen und installieren.

Dazu muss man zuerst ein Projekt in einem eigenen Ordner starten und dort die Datei package.json anlegen:

Diese erzeugt man mit dem Befehl

$ mkdir mein_projekt
$ cd mein_projekt
$ npm init -y

Die Datei package.json sieht ungefähr so aus:

{
"name": "mein_projekt",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "module"
}

Finde den Key type und stell sicher dass als Wert "module" angegeben ist.

Der Package manager npm installiert die packages im Ordner node_modules. Als Beispiel installieren wir ein Package namens qrcode-terminal

Terminal-Fenster
$ npm install qrcode-terminal
added 1 package, and audited 2 packages in 599ms
found 0 vulnerabilities
$ du -h -s *
160K node_modules
4,0K package-lock.json
4,0K package.json

Es sind drei Dinge passiert:

  • in package.json wurde eingetragen dass wir qrcode-terminal verwenden wollen
  • package-lock.json wurde erstellt. Hier würden weitere Dependencies eingetragen, die qrcode-terminal braucht
  • im Ordner node_modules wurde ein Unter-Ordner qrcode-terminal erstellt, er enthält das installierte Package

Javascript hat den Ruf besonders viele kleine Pakete zu verwenden, und besonders viel Speicherplatz für node_modules zu verbrauchen:

Meme über node_modules

Quelle Reddit r/ProgrammerHumor

Das Package qrcode-terminal enthält ein ausführbares Programm für die Kommandozeile. Mit “Node Package eXecute” kann man es starten und ihm eine URL übergeben:

npx qrcode-terminal https://web-development.github.io/advanced-javascript/nodejs

Das Programm gibt einen QR Code der URL aus:

QR Code für diese Webseite

Für javascript-Programm vom typ Module die mit node.js gestartet werden gilt: Verwende “barewords” für Pakete aus node_modules, und relative Pfade für eigene Dateien:

import * as http from 'http';
import * as config from './config/index.js';