24. express.js
Web Application Framework. Baut auf dem http-
Modul von Node.js auf. Bietet Middleware-
Komponenten, mit denen auf Requests reagiert
werden kann. Zusätzlich verfügt express.js über
einen Router.
26. Routing
Navigation in der Applikation per URL.
Variablen in URLs für dynamische Inhalte.
Eine Route besteht aus zwei Teilen: HTTP-
Methode und Pfad.
Routendefinition in eine separate Datei
auslagern.
28. Statischer Inhalt
Es ist kein zusätzlicher Webserver
erforderlich. Node.js liefert HTML, CSS, clientseitiges
JavaScript und Mediendateien selbst aus.
34. Datenbanken
Speichern und Auslesen dynamischer Inhalte.
Es werden nahezu alle Datenbanken unterstützt
z.B. mySQL, SQLite, Redis, MongoDB.
Zugriffe auf Datenbanken sind in der Regel
asynchron.
35. Datenbanken
var sqlite = require(‘sqlite3’);!
!
var db = new sqlite.Database(‘/tmp/db’);!
!
db.get(‘SELECT * FROM users’, function(err,
data) {!
res.send(‘Hello ‘ + data.name);!
});
C:WINDOWS npm install sqlite3
37. Asynchronität
Nahezu alle Operationen in Node.js sind
asynchron. Das gilt vom Webserver über den
Zugriff auf das Dateisystem bis hin zu
Datenströmen. Es wird viel mit Callback-
Funktionen gearbeitet. Diese können mit Promises
besser verwaltet werden.
41. Skalierung
Node.js ist im Normalfall Single Threaded und
kann deswegen nur mit einer bestimmten Anzahl
von Anfragen umgehen. Ressourcen eines
Servers können nicht vollständig ausgeschöpft
werden.
Es existieren mehrere Lösungszenarien.
47. Cluster
Es werden Kindprozesse über die fork-Methode
erzeugt. Die Kindprozesse teilen sich einen
TCP-Port.
Das Betriebssystem übernimmt das
Loadbalancing.
50. Loadbalancer
Mit einer Shared Nothing-Architektur kann
Node.js problemlos hinter einem Loadbalancer
betrieben werden.
Gemeinsamer Applikationsstatus wird über
eine Datenbank wie Memcache oder Redis
verwaltet.
Gut eignen sich z.B. HAProxy oder Nginx.
54. Tests
Node.js ist selbst recht ordentlich getestet (tests/
simple/*.js). Es verfügt über ein eigenes
Testframework (assert-Modul).
Es gibt verschiedene Unittest-
Frameworks für Node.js.
58. nodeunit
Installation über npm install -g nodeunit.
nodeunit ist ein eigenständiges Testframework.
Bietet übersichtlichere Ausgabe als das Assert-
Modul.
Die verfügbaren Assertions sind ähnlich wie die
des Assert-Moduls.
61. Mocha
Installation über npm install -g mocha!
Eigenständiges Testframework, das
zusätzliche Assertion Libraries wie expect.js
und should.js einbindet.
Nicht nur für Node.js exklusiv.
62. describe(Subject, function () {!
it(should do something, function () {!
expect(true).to.eql(true);!
});!
it.only(should do something, function () {!
expect(true).to.eql(true);!
});!
it.skip(should do something, function () {!
expect(true).to.eql(true);!
});!
});