Express.js
# Express.js

Express.js ist ein serverseitiges Webframework für die JavaScript-basierte Plattform Node.js. Es erweitert Node.js um Werkzeuge, mit denen das Entwickeln moderner Webanwendungen einfacher gestaltet wird.

## Architektur

Eine Express.js-Anwendung besteht zumindest aus der Datei app.js, in welcher Middleware und Controller registriert und der Webserver gestartet wird.

Einer Client-Anfrage (HTTP-Request) können im Router eine oder mehrere Requesthandler zugewiesen werden. Für die Zuweisung zwischen Anfrage und Requesthandler stellt Express.js Weiterleitungs-Werkzeuge zur Verfügung.

Werden einer Anfrage mehrere Requesthandler zugewiesen, so werden diese nacheinander ausgeführt; jeder dieser Requesthandler ist ein für sich genommen neutrales Programm.

Ein Requesthandler akzeptiert dabei drei Parameter:

* das Anfrageobjekt
* das Antwortobjekt
* den nächsten unter dieser Anfrage abzuarbeitenden Requesthandler.

Durch diese modulare Architektur lassen sich Prozesse, welche oft ausgeführt werden müssen, z. B. Authentifizierungslogiken, vor Abhandlung eines Prozesses einschieben.

Um JavaScript-Konventionen fortzusetzen, wird Express.js oft in Kombination mit NoSQL-Datenbanken wie MongoDB verwendet. Eine etablierte Kombination von Technologien, in welcher Express.js eingesetzt wird, nennt sich MEAN und steht für MongoDB, Express.js, Angular.js und Node.js.

## Beispiele

### app.js

Dieser Code startet einen Webserver, der auf Port 3000 hört.

### router.js

Dieser Code weist der Anfrage ‘/’ einen Requesthandler zu.

### Middlewares

Es gibt viele Möglichkeiten Middlewares in Express.js zu nutzen. Eine ist, mehrere Requesthandler an eine Client-Anfrage zu binden. Dieser Code zeigt, wie eine Authentifizierungslogik vor den vom Client geforderten Prozess eingeschoben wird.

## Projekte

Projekte, die mit Express realisiert wurden:

* Myspace
* LearnBoost
* Storify
* Geekli.st
* Klout
* Prismatic
* StudyNotes
* Persona
* Countly
* Segment.io
* Yummly
* Koding
* Apiary.io
* Cozy
* FlyLatex
* SimpleSet
* Ghost
* LogHuman
* VogueVerve
* Glip
