Node.js

  • Node.js ist eine serverseitige JavaScript-Plattform zur Realisierung von Webservern
  • Node.js wird dabei in der JavaScript-Laufzeitumgebung „V8“ ausgeführt
  • Node.js wurde 2009 vom Webentwickler Ryan Dahl veröffentlicht und ist auf verschiedenen Plattformen als Open-Source-Software unter der MIT-Lizenz verfügbar
  • Node.js ist modular aufgebaut und verwendet den Paketmanager npm zur Verwaltung seiner Module
  • ...mehr lesen...

  • Eine aktuelle Version von Node.js kann auf der Seite „https://nodejs.org/de/“ heruntergeladen werden
  • Die Installation von Node.js kann gestartet werden, indem auf den Download-Verweis im Browser oder die heruntergeladene Datei geklickt wird
  • Ob die Installation von Node.js erfolgreich war, kann getestet werden, indem in der Eingabeaufforderung von Windows „node --version“ eingegeben wird
  • ...mehr lesen...

  • Auf Ubuntu werden Node.js und der Paketmanager „npm“ getrennt aus den offiziellen Paketquellen installiert
  • Node.js kann aus den offiziellen Paketquellen wie folgt installiert werden:
    sudo apt-get install nodejs
  • Nach der Installation kann folgendermaßen getestet werden, ob Node.js erfolgreich installiert wurde:
    node --version
  • Der Paketmanager „npm“ kann aus den offiziellen Paketquellen wie folgt installiert werden:
    sudo apt-get install npm
  • Nach der Installation kann folgendermaßen getestet werden, ob der Paketmanager „npm“ erfolgreich installiert wurde:
    npm --version
  • ...mehr lesen...

  • Auf Manjaro werden Node.js und der Paketmanager „npm“ getrennt aus den offiziellen Paketquellen installiert
  • Node.js kann aus den offiziellen Paketquellen wie folgt installiert werden:
    sudo pacman -S nodejs
  • Nach der Installation kann folgendermaßen getestet werden, ob Node.js erfolgreich installiert wurde:
    node --version
  • Der Paketmanager „npm“ kann aus den offiziellen Paketquellen wie folgt installiert werden:
    sudo pacman -S npm
  • Nach der Installation kann folgendermaßen getestet werden, ob der Paketmanager „npm“ erfolgreich installiert wurde:
    npm --version
  • ...mehr lesen...

  • Im sog. Interaktiven Modus stellt Node.js eine Kommandozeile zur Verfügung, in der JavaScript-Befehle und Funktionen ausgeführt werden können
  • Der Interaktive Modus wird in der Kommandozeile des Betriebssystems mit „node“ gestartet und mit „STRG + D“ beendet
  • Die zweite und weitaus häufiger verwendete Möglichkeit besteht darin, JavaScript-Dateien (Programme) zu erstellen und mit Node.js ausführen zu lassen
  • Die JavaScript-Datei wird in der Kommandozeile des Betriebssystems mit „node dateiname.js“ gestartet
  • Der Befehl muss dabei in dem Verzeichnis ausgeführt werden, indem sich die JavaScript-Datei befindet
  • ...mehr lesen...

NPM

  • npm stand anfangs für „Node Package Manager“ und ist der Paketmanager für Node.js
  • Der Paketmanager npm dient dazu Pakete, d. h. vorgefertigte Node.js-Module, in Node.js zu integrieren, zu aktualisieren und wenn nötig wieder zu entfernen
  • Mit „npm ls“ kann abgefragt werden, welche Module aus dem globalen Repository geladen und lokal installiert wurden
  • Mit „npm install modulname“ kann ein Modul heruntergeladen und installiert werden
  • Um ein Modul in einer eigenen Applikation zu verwenden, wird das entsprechende Modul mit „require“ eingebunden
  • Mit „npm update modulname“ kann ein Modul aktualisiert werden
  • Mit „npm uninstall modulname“ kann ein Modul wieder deinstalliert werden
  • ...mehr lesen...

  • Das HTTP-Modul ist ein in Node.js integriertes Modul für den Transfer von Daten über das HTTP-Protokoll
  • Mit dem HTTP-Modul wird ein HTTP-Server erstellt, der auf einem konfigurierbaren Server-Port auf Anfragen wartet und eine definierbare Antwort zurück gibt
  • Das HTTP-Modul wird mit „require(‚http‘)“ eingebunden
  • Ein Webserver kann mit „http.createServer(function(req, res) { … }).listen(port);“ erstellt werden
  • Der erste Parameter der Callback-Funktion enthält Informationen zur Anfrage an den Server
  • Die Antwort kann über den zweiten Parameter der Callback-Funktion gesendet werden
  • ...mehr lesen...

  • Das URL-Modul ist ein in Node.js integriertes Modul, mit dem eine Webadresse in lesbare Abschnitte aufgespalten werden kann
  • Das URL-Modul liefert u. a. Hostnamen, Port und Pfad sowie die Parameter aus der Webadresse
  • Außerdem können die Parameter zusätzlich im JSON-Format ausgegeben werden
  • Das URL-Modul wird mit „require(‚url‘)“ eingebunden
  • Mit „url.parse(adresse)“ kann eine Adresse zu einem URL-Objekt geparst werden, dass dann die einzelnen Bestandteile der Adresse als Eigenschaften enthält
  • Auf die Bestandteile der Adresse kann dann mit „urlobjekt.bestandteil“ zugegriffen werden
  • Mit „url.parse(req.url, true).query“ kann aus den Parametern einer URL ein JSON-Objekt erstellt werden
  • Mit „jsonobjekt.parametername“ kann dann auf den Wert des entsprechenden Parameters zugegriffen werden
  • ...mehr lesen...

  • Anwendungen die mit Node.js erstellt werden sind Ereignis-gesteuert
  • Das Events-Modul ist ein in Node.js integriertes Modul, mit dem Events (Ereignisse) und Event-Listener erstellt, verwaltet und gelöscht sowei Ereignisse ausgelöst werden können
  • Das Events-Modul kann mit „require(‚events‘)“ in eine Anwendung eingebunden werden
  • Um die Eigenschaften und Methoden des Events-Moduls verwenden zu können, muss zunächst ein EventEmitter-Objekt mit „var eventEmitter = new events.EventEmitter()“ erstellt werden
  • Mit „eventEmitter.on(‚event‘, eventListener)“ oder „eventEmitter.addListener(event, eventListener)“ kann einem Ereignis ein Event-Listener zugewiesen werden
  • Mit „eventEmitter.emit(‚event‘)“ kann ein Ereignis ausgelöst werden
  • Mit „eventEmitter.removeListener(‚event‘, eventListener)“ kann ein einzelner Event-Listener von einem Event entfernt werden
  • Mit „eventEmitter.removeAllListeners([‚event‘])“ können alle Event-Listener von einem Event oder alle Event-Listener in einer Anwendung entfernt werden
  • Mit „eventEmitter.listeners(‚event‘)“ können alle mit einem Event verknüpften Event-Listener ausgegeben werden
  • Mit „events.listenerCount(emitter, ‚event‘)“ kann die Anzahl der mit einem Event verknüpften Event-Listener ermittelt werden
  • Mit „eventEmitter.once(‚event‘, eventListener)“ kann einem Event ein Event-Listener für eine einmalige Ausführung zugeordnet werden
  • ...mehr lesen...

  • Das FS-Modul (File-System-Modul) ist ein in Node.js integriertes Modul, das die Verwendung des Dateisystems des auf dem Computer installierten Betriebssystems ermöglicht
  • Das FS-Modul ermöglicht das erstellen, lesen, löschen, aktualisieren und umbenennen von Dateien und Verzeichnissen
  • Das FS-Modul wird mit „require(‚fs‘)“ eingebunden
  • Mit „fs.open(pfad, flag, callback)“ kann eine Datei geöffnet werden
  • Mit „fs.readFile(pfad, buffer, offset, length, position, callback)“ können Daten aus einer Datei ausgelesen werden
  • Mit „fs.close(fd, callback)“ kann eine Datei geschlossen werden
  • Mit „fs.writeFile(pfad, daten, options, callback)“ können Daten in eine Datei geschrieben werden
  • Mit „fs.appendFile(pfad, daten, options, callback)“ können Daten an die bereits existierenden Daten einer Datei angehängt werden
  • Mit „fs.ftruncate(fd, länge, callback)“ kann eine Datei geleert werden
  • Mit „fs.rename(old_filename, new_filename, callback)“ kann eine Datei umbenannt werden
  • Mit „fs.unlink(filename, callback)“ kann eine Datei gelöscht werden
  • ...mehr lesen...

  • Mit „fs.mkdir(path, callback)“ kann ein Verzeichnis erstellt werden
  • Mit „fs.readdir(path, callback)“ kann ein Verzeichnis ausgelesen werden
  • Mit „fs.rmdir(path, callback)“ kann ein Verzeichnis gelöscht werden
  • Mit „fs.stat(path, callback)“ können Informationen über eine Datei oder ein Verzeichnis ausgelesen werden
  • ...mehr lesen...

  • Streams sind Objekte, mit denen Daten kontinuierlich gelesen und geschrieben werden können
  • Mit „fs.createReadStream(‚datei.txt‘)“ kann ein neuer Lese-Stream erstellt werden
  • Mit „readerStream.on(‚data‘, function(teil) { … })“ können die Daten aus einer Datei gestreamt werden
  • Mit „readerStream.on(‚end‘, function() { … })“ kann eine Funktion ausgeführt werden, nachdem alle Daten gestreamt wurden
  • Mit „fs.createWriteStream(‚output.txt‘)“ kann ein neuer Schreib-Stream erstellt werden
  • Mit „writerStream.write(data, encoding)“ können Daten in die zuvor angegebene Datei gestreamt werden
  • Mit „writerStream.end()“ kann die Ende-Marke in der Datei gesetzt werden
  • Mit „writerStream.on(‚finish‘, function() { … })“ kann eine Funktion ausgeführt werden, nachdem der Schreibvorgang erfolgreich beendet wurde
  • Mit „readerStream.pipe(writerStream)“ kann ein Lese-Stream direkt an einen Schreib-Stream weitergereicht werden
  • ...mehr lesen...

  • Mit Hilfe des MySQL-Moduls kann von Node.js aus auf das Datanbankmanagementsystem MySQL zugegriffen werden
  • Das MySQL-Modul ist nicht in der Standardinstallation von Node.js enthalten und muss mit „npm install mysql“ installiert werden
  • Mit „var con = mysql.createConnection({host: ‚hostname‘, user: ‚username‘, password: ‚password‘})“ kann eine Verbindung zu MySQL definiert werden
  • Mit „con.connect(function(err){...})“ kann eine Verbindung zu MySQL hergestellt werden
  • Mit „con.query(‚CREATE DATABASE datenbankname‘, function(err, result){...})“ kann eine neue Datenbank erstellt werden
  • Mit „con.query(‚CREATE TABLE tabellenname(spaltenname SPALTENTYP, ...)‘, function(err, result){...})“ kann eine neue Tabelle erstellt werden
  • Damit die Tabelle in der gewollten Datenbank erstellt wird, muss bei der Verbindungskonfiguration mit „database: ‚datenbankname‘“ die entsprechende Datenbank angegeben werden
  • Mit „con.query(‚ALTER TABLE tabellenname DROP COLUMN spaltenname‘, function(err, result){...})“ kann eine Spalte in einer Tabelle gelöscht werden
  • Mit „con.query(‚ALTER TABLE tabellenname ADD COLUMN spaltenname SPALTENTYP FIRST‘, function(err, result){...})“ kann eine neue Spalte an den Anfang einer Tabelle hinzugefügt werden
  • Mit „con.query(‚DROP TABLE tabellenname‘, function(err, result){...})“ kann eine Tabelle gelöscht werden
  • ...mehr lesen...

  • Mit „con.query(‚INSERT INTO tabellenname (spaltenname1, spaltenname2, …) VALUES (‚Feldwert1, Feldwert2, ...)‘, function(err, result){...})“ kann ein Datensatz in eine Tabelle eingefügt werden
  • Mit „con.query(‚SELECT spaltenname1, spaltenname2 FROM tabellenname‘, function(err, result){...})“ können nur bestimmte Spalten der Datensätze einer Tabelle ausgelesen werden
  • Die ausgelesenen Datensätze werden mit dem „result“-Objekt in der Callback-Methode zurückgegeben
  • Mit „con.query(‚SELECT * FROM tabellenname WHERE feldname = wert‘, function(err, result){...})“ können die Datensätze einer Tabelle nach bestimmten Kriterien ausgelesen werden
  • Mit „con.query(‚SELECT * FROM tabellenname ORDER BY spaltenname‘, function(err, result){...})“ können alle Datensätze einer Tabelle aufsteigend sortiert ausgelesen werden
  • Mit „con.query(UPDATE tabellenname SET spaltenname = ‚wert‘ WHERE spaltenname = ‚wert‘‘, function(err, result){...})“ kann ein bestimmtes Feld eines Datensatzes angepasst werden
  • Mit „result.affectedRows“ kann ausgelesen werden, wieviele Zeilen tatsächlich angepasst wurden
  • Mit „con.query(DELETE FROM tabellenname WHERE spaltenname = ‚wert‘‘, function(err, result){...})“ kann ein bestimmter Datensatz gelöscht werden
  • ...mehr lesen...

  • Das Express-Modul ist ein Web-Framework für das schnelle und unkomplizierten Entwickeln von Webanwendungen und Webservices
  • Das Express-Modul ist nicht in der Standardinstallation von Node.js enthalten und muss mit „npm install express“ installiert werden
  • Mit „app.get(‚/‘, function(req, res) {...})“ kann eine einfache Server-Anfrage realisiert werden
  • Dabei muss mit „app.listen(port, function() {...})“ zusätzlich der Port für die Serveranfrage angegeben werden
  • Mit Hilfe des HTTP-Routings können differenziertere Anfragen an den Server gestellt werden
  • Mit „app.httpmethode(...)“ können die verschiedenen HTTP-Methoden verwendet werden
  • Mit „app.httpmethode(‚pfad‘, ...)“ kann über die Pfadangabe eine Anfrage weiter differenziert werden
  • Wird in einem „form“-Element ein „submit“-Button betätigt, wird die URL im „action“-Attribut des „form“-Elements aufgerufen
  • Dabei wird der Inhalt der „input“-Elemente zusammen mit deren „name“-Attributen als Parameter an die URL angefügt
  • Auf der Serverseite kann dann mit „req.query“ auf alle Parameter und mit „req.query.parametername“ auf die einzelnen Werte zugegriffen werden
  • Mit der POST-Methode ist der Ablauf wie mit der GET-Methode, nur dass hier die Parameter nicht sichtbar übertragen werden
  • Um die Parameter auf der Serverseite auslesen zu können muss dann die URL mit Hilfe des „body-parser“-Moduls dekodiert werden
  • Der Zugriff erfolgt dann über das „body“-Element anstatt über „query“
  • Mit „app.use(express.static(‚verzeichnisname‘))“ kann auf ein Verzeichnis für die Node.js-Anwendung verwiesen werden, aus dem mit „serveraufruf/dateiname Dateien geladen werden können
  • Mit „app.use(multer({dest: „/verzeichnisname/“}).any()“ kann ein temporäres Verzeichnis für den Datei-Upload definiert werden
  • Mit „req.files[index]“ kann auf die hochgeladenen Dateien zugegriffen werden
  • Im „form“-Element muss zusätzlich „enctype=“multipart/form-data“ angegeben werden
  • ...mehr lesen...

  • REST steht für Representational State Transfer und ist ein Architekturprinzip für den Datenaustausch zwischen Anwendungen und wird meist für Webservices verwendet
  • Im Gegensatz zu anderen Architekturprinzipien sind REST-Services einheitliche Schnittstellen ohne Methodendefinitionen
  • Für die Umsetzung von REST-Services wird das zustandslose Protokoll HTTP mit seinen Methoden POST, GET, PUT und DELETE verwendet
  • Mit „app.get(‚/‘, … )“ wird im Beispiel der Einstieg der Startseite und mit „app.listen(8081)“ der Port definiert
  • Mit „JSON.parse(data)“ kann eine JSON-Struktur in ein JavaScript-Objekt umgewandelt werden
  • Mit „app.post(‚/addUser‘, ...)“ wird im Beispiel der Aufruf zum Hinzufügen von Benutzern definiert
  • Die Übergabeparameter werden aus der POST-Methode mit „req.body.parameter“ ausgelesen
  • Mit „JSON.stringify(object)“ kann ein JavaScript-Objekt in eine JSON-Struktur umgewandelt werden
  • Mit „res.redirect(‚url)“ kann innerhalb einer HTTP-Route eine andere HTTP-Route aufgerufen werden
  • Mit „app.post(‚/deleteUser‘, ...)“ wird im Beispiel der Aufruf zum Löschen von Benutzern definiert
  • ...mehr lesen...