Ubuntu 12.04 „Precise Pangolin“
Node.js
ist eine Javascript-Bibliothek, welcher in erster Linie zum Erstellen von serverseitigen Javascript-Anwendungen gedacht ist. Die Bibliothek erweitert "klassisches" Javascript um die notwendigen Funktionen für Webanwendungen u.ä. Die Besonderheit der Bibliothek Node.js ist dabei, dass sie - ebenso wie Javascript an sich - komplett ereignis-basiert arbeitet und dadurch besonders gut für Anwendungen mit vielen (offenen) Verbindungen geeignet ist. Zur Ausführung des Skriptcodes setzt Node.js dabei auf die V8 Javascript Engine von Google.
Node.js ist in den offiziellen Paketquellen enthalten, aber in einer vergleichsweise alten Version 0.6.x:
nodejs (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install nodejs
sudo aptitude install nodejs
Außerdem wird bei der Installation über die Paketquellen der Node Package Manager nicht mit installiert.
Von daher empfiehlt sich die manuelle Installation einer aktuellen Version des Programms, wovon auch im weiteren Verlauf des Artikels ausgegangen wird.
Die manuelle Installation von Node.js ist nicht weiter schwierig oder aufwendig. Zuerst lädt man die aktuelle Version von der Projektseite herunter (der Download-Link befindet sich direkt auf der Startseite) und entpackt das Archiv[4] in ein beliebiges Verzeichnis, z.B. das eigene Homeverzeichnis.
Weiterhin benötigt der Installer Python, welches aber in allen *buntu-Versionen inkl. der Servervariante bereits installiert ist. Möchte man in Node.js die Kryptographie-Module nutzen (z.B. zur Checksummenbildung oder Verschlüsselung), dann muss vor dem Kompilieren noch das Paket openssl installiert werden[1]:
openssl (optional)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install openssl
sudo aptitude install openssl
Node.js kann mit dem bekannten Dreisatz[5] übersetzt werden, wobei die Kompilierung auch auf schnellen Rechnern ein paar Minuten in Anspruch nehmen kann. Die Dateien liegen dann alle unterhalb von /usr/local/bin/node und /usr/local/lib/node.
Soll das Programm in ein anderes Verzeichnis installiert werden, wie z.B. /opt oder das eigene Homeverzeichnis, dann muss beim Aufruf von ./configure
die Option --prefix=ZIELVERZEICHNIS
angegeben werden.
Bei der Benutzung von Node.js kommen zwei Programme zum Einsatz:
node
- führt Skripte aus und stellt eine Javascript-Kommandozeile bereit
npm
- der Node Package Manager
Es gibt zwei Möglichkeiten, Javascript-Code mit Node.js auszuführen: entweder man schreibt ein Skript / Programm und ruft es entsprechend auf, so dass es ausgeführt wird[2]:
node skript.js
Oder man nutzt den interaktiven Modus, in dem Node.js eine Javascript-Kommandozeile zur Verfügung stellt:
node
Darauf hin ändert sich der Prompt zu einem >
und man kann beliebige Javascript-Befehl und Funktionen ausführen, z.B.:
1 2 3 | > console.log("Hallo Welt") Hallo Welt undefined |
Zum Beenden der Kommandozeile muss zwei Mal
Strg +
C gedrückt werden. node
kennt eine Reihe von Optionen, welche in der Manpage nachgelesen werden können.
Wer Node.js über die Paketquellen installiert hat, der muss statt node
den Aufruf nodejs
verwenden!
Neben node
wird auch noch der Node Package Manager (kurz: npm) mit installiert. Dieser erlaubt es, die Kernfunktionalität von Node.js über Zusatzpakete zu erweitern. Es stehen weit über 20.000 Erweiterungen für alle erdenklichen Aufgaben zur Verfügung.
Zum Installieren einer Erweiterung dient der Befehl
npm install ERWEITERUNG
zum Deinstallieren der Befehl
npm uninstall ERWEITERUNG
npm
kann aber noch weit mehr. So dient das Programm z.B. auch dazu, eigene Pakete für Node.js zu Erstellen und in den "Package Index" nachzuladen. Details zu den Funktionen sind in der offiziellen Dokumentation zu finden.
Im folgenden ein kleines Beispiel für eine minimalistische Webapplikation, welche einen Namen abfragt und dann den Benutzer begrüßt. Dabei kommen die recht populäre, auf Node.js aufsetzende Bibliothek Express sowie die Template-Engine Jade
zum Einsatz.
Beide müssen zuerst via npm installiert werden:
npm install express npm install jade
Das Beispiel besteht aus einer Hauptdatei beispiel.js und zwei Templates Names index.jade und hallo.jade, wobei die Templates in einem Verzeichnis views liegen müssen, welches sich unterhalb des Verzeichnisses befinden muss, in dem beispiel.js liegt.
Der Code sieht so aus:
beispiel.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var express = require('express'); var app = express(); app.use(express.bodyParser()); app.get('/', function(req, res) { res.render('index.jade', { pageTitle: 'Eingabeformular' }); }); app.post('/', function(req, res) { res.render('hallo.jade', { pageTitle: 'Hallo!', userName: req.body.username }); }); app.listen(8080) |
index.jade:
1 2 3 4 5 6 7 8 9 10 | !!! 5 html(lang="de") head title =pageTitle body h1 Namenseingabge p Dein Name: form(action="/", method="post") input(type="text", name="username") input(type="submit") |
hallo.jade:
1 2 3 4 5 6 7 | !!! 5 html(lang="de") head title =pageTitle body h1 Herzlich Willkommen! p Hallo #{userName} |
Startet man die Applikation über
node beispiel.js
dann kann man das "Ergebnis" unter der Adresse http://localhost:8080
im Browser abrufen.
Hat man Node.js manuell installiert und das klassische make install
(statt make checkinstall
) verwendet, dann lassen sich die Dateien wie folgt vollständig deinstallieren: Zuerst wechselt man in das Verzeichnis, in welches das Archiv entpackt wurde und aus dem heraus die Installation erfolgt ist. Dann ruft man dort den folgenden Befehl mit Root-Rechten auf[2][3]:
sudo make uninstall