node.js
als Präsentation ▻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
▻
Was ist Node.js?
Node.js wurde ursprünglich 2009 von Ryan Dahl geschrieben als Kombination zweier bereits existierender Softwarekomponenten:
- dem Google JavaScript-Interpreter V8 – Code
- einer Bibliothek für asynchrones Programmieren libuv – Code
Dazu kam eine in JavaScript geschriebene Standardbibliothek. 2010 wurde mit npm ein Paketmanager für JavaScript-Bibliotheken ergänzt.
▻Wie groß ist Node.js?
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
Hallo Node
Du schreibst dein Programm in JavaScript, speicherst es in einer Datei:
console.log("Hello Node");
und führst es mit dem node
-Befehl aus:
$ node hello.js
Hello Node
Pakete
Der npm Paketmanager kann Javascript-Pakete aus dem Internet (von https://www.npmjs.com/) herunterladen und installieren.
▻package.json
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.
node_modules
Der Package manager npm
installiert die packages
im Ordner node_modules
. Als Beispiel installieren wir
ein Package namens qrcode-terminal
$ 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 wirqrcode-terminal
verwenden wollen package-lock.json
wurde erstellt. Hier würden weitere Dependencies eingetragen, dieqrcode-terminal
braucht- im Ordner
node_modules
wurde ein Unter-Ordnerqrcode-terminal
erstellt, er enthält das installierte Package
Kleine Pakete, Grosses node_modules
Javascript hat den Ruf besonders viele kleine Pakete zu verwenden,
und besonders viel Speicherplatz für node_modules
zu verbrauchen:
Quelle Reddit r/ProgrammerHumor
▻Node Package eXecute - npx
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:
import
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';