Einführung in Express
Express ist die Middleware-Komponente einer Node-Applikation. Damit ist die Vermittlungsschicht zwischen dem Client und dem Backend mit seinen Persistenzfunktionen gemeint. Kernaufgabe ist das Routing.
Installation
Voraussetzung für Express ist eine funktionierende Node-Umgebung. Liegt diese vor, können Sie eine erste Applikation erstellen. Der hier gezeigte Ablauf stellt Express bereit, die eigentliche Infrastruktur müssen Sie aber manuell erstellen. Im Abschnitt Applikationsstruktur finden Sie Informationen, wie der Express-Generator eingesetzt werden kann, um dies zu vereinfachen.
Zuerst wird ein Ordner für die Applikation geschaffen:
mkdir SimpleApp
cd SimpleApp
Mit npm init
wird dann eine Datei package.json erzeugt. Damit werden die Applikation und ihre Abhängigkeiten beschrieben.
npm init
Die Angaben für die Beschreibungsdatei werden im Dialog abgefragt. In den meisten Fällen ist es in Ordnung die Standards zu übernehmen. Drücken Sie also einfach mehrfach ENTER, außer für die Option entry point
. Hier geben Sie folgendes ein:
entry point: app.js
Dies bestimmt, dass die Startdatei, also der Beginn der Applikation, app.js ist. Sie können natürlich jeden Namen wählen.
Nun wird Express installiert und in die Liste der Abhängigkeiten (Option --save
) aufgenommen. Fügen Sie gegebenenfalls noch die Option -g
hinzu, um Express global verfügbar zu machen. Das ist sinnvoll, wenn Sie planen, weitere Projekte mit Node zu entwickeln.
$ npm install express --save
{title=“Abbildung: Interaktive Installation (Ubuntu)“}
Applikationsstruktur
Express liefert eine fertige Applikationsstruktur. Mit der Installation steht nicht nur das Express-Modul bereit, sondern die fertige Ordnerstruktur kann mit nur einem Befehl erstellt werden. Sie müssen dies jedoch nicht nutzen. Es ist durchaus möglich, eine Applikation ganz einfach auf einer einzigen Datei aufbauend zu erstellen.
Bei der Installation im vorherigen Abschnitt wurde bei der Initialisierung gesagt, dass die Startdatei app.js lautet. Diese könnte nun folgendermaßen aussehen:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hallo Express!');
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Ich höre auf http://%s:%s', host, port);
});
Hier wird zuerst Express selbst eingebunden und mit dem Konstruktor-Aufruf eine Applikation app
erstellt. Dann wird eine Route festgelegt, sie Stammroute „/“. Alle anderen Aufrufe führen zu einem HTTP-Fehler 404 (Nicht gefunden). Dann wird der Endpunkt bestimmt, hier der Port 3000 auf dem lokalen System. Trifft nun ein HTTP-Request ein, wird die Funktion der passenden Route ausgeführt. Im Beispiel wird dann der Text „Hallo Express!“ ausgegeben. HTML gibt dieses Skript noch nicht zurück, dies muss alles separat erledigt werden. Es handelt sich jedoch bereits um eine korrekte HTTP-Kommunikation
Der Express-Generator
Zum Erzeugen einer Applikation kann der Express-Generator eingesetzt werden. Dieser steht als weiteres NPM-Paket zur Verfügung.
$ npm install express-generator -g
Der Generator verfügt über einige Optionen, erzeugt aber auch ohne weitere Angaben eine sinnvolle Umgebung.
{title=“Tabelle: Optionen des Express-Generators“}
Option | Bedeutung |
---|---|
-v, –version | Version |
-e, –ejs | EJS-Engine, Standard: Jade |
-hbs | Handlebars-Engine |
-H, –hogan | Hogan-Engine (www.hogan.js) |
-c, –css [CS] | CSS-Precompiler |
-f, –force | Erzwinge Dateien in nicht-leeren Ordnern |
Der CSS-Precompiler kann einer der folgenden sein (Name und in Klammern die zu benutzende Option (option)):
- LESS (less)
- Stylus (stylus)
- Compass (compass)
- SASS (sass)
Ohne Angabe wird einfaches CSS erwartet.
LESS oder SASS
In diesem Werk wird mit LESS (http://lesscss.org/) gearbeitet. Prinzipiell ist das egal, wenn Sie bereits einen Favoriten haben, nutzen Sie diesen. Wenn beides neu ist, dann werden Sie mit LESS möglicherweise etwas glücklicher am Anfang, da es einfacher und weiter verbreitet ist (das heißt mehr Quellen zum Lernen und weniger Aufwand). Profis greifen dagegen oft zu SASS (http://sass-lang.com/).
Der Generator erzeugt auch das Stammverzeichnis der Applikation, sodass Sie am besten im übergeordneten Verzeichnis beginnen:
express PortalApp
cd PortalApp
npm install
Mit dieser Befehlsfolge wird eine Applikation mit dem Namen PortalApp im Ordner PortalApp erstellt. Nun wird die Applikation im Debug-Modus gestartet:
set DEBUG=PortalApp & npm start
Die Standardadresse ist http://localhost:3000. Der Webserver basiert auf Node und weitere Einstellungen am Betriebssystem sind nicht erforderlich. Sie müssen hier weder IIS noch Apache oder sonst einen Server bereitstellen — es funktioniert, einfach so.
Windows
Unter Windows werden Sockets für HTTP-Kommunikation vom Kernel-Treiber http.sys bereitgestellt. Node registriert den Port 3000 dort. Das gelingt nur, wenn der Port frei ist. Es kann also passieren, das Node mit einem ebenfalls installierten und aktiven IIS oder Apache-Webserver kollidiert.
Nur zum Start
Es ist sinnvoll, mit der vom Generator erzeugten Struktur zu beginnen und erst zu einem späteren Zeitpunkt Modifikationen daran vorzunehmen, wenn der Bedarf dafür da ist.