senäh

17senäh und so…

HTML/CSS/JS
17. Okt 2013
Kommentare: 4

Connect

Kategorien: HTML/CSS/JS | 17. Okt 2013 | Kommentare: 4

Serie: Einführung in den MEAN Stack

Connect ist ein Node-Framework welches auf das zuvor vorgestellte http Modul aufbaut und Grundlage für Express ist. In diesem Artikel zeige ich euch wie ihr mit Connect einen statischen Dateiserver programmiert. Ich erkläre euch außerdem was eine Middleware ist.

Installiert Connect mit folgenden Befehl in einen neuen Projektordner:

$ npm install connect

Im aktuellen Ordner sollte sich nun ein Ordner namens node_modules befinden, welcher wiederum einen Ordner namens connect beinhaltet. Zum Zeitpunkt des Schreibens ist die aktuellste Version von Connect 2.9.0.

In einer neuen Datei server.js, die im gleichen Ordner wie node_modules erstellt werden sollte, kann nun das Connect Modul required werden.

var connect = require('connect');

Beachtet, dass in require nicht noch einmal node_modules stehen muss. Die require-Funktion wurde so entwickelt, dass sie zuerst immer der Ordner node_modules nach einem Modul mit dem Namen connect durchsucht. Wird kein Modul gefunden mit diesen Namen gefunden, läuft require den Pfad der aktuellen Datei (server.js) nach oben ab bis in einem übergeordneten Pfad ein node_modules Ordner mit diesem Modul gefunden wird. Zum Schluss werden die global installierten Module durchsucht. Wird gar kein Modul mit diesem Namen gefunden, so wird ein Fehler auf der Konsole ausgegeben. Dies würde so aussehen:

module.js:340

    throw err;

          ^

Error: Cannot find module 'connect'

Mit Connect könnt ihr sehr schnell einen statischen Dateiserver entwickeln. Ihr benötigt nur vier Zeilen Code:

var connect = require('connect');
connect()
  .use(connect.static(__dirname))
  .listen(1337, '127.0.0.1');

Das Connect Modul ist im Wesentlichen eine Konstruktorfunktion zum Erstellen eines Servers – ähnlich wie zuvor die Funktion http.createServer. Sie enthält sogar eine identisch aufgebaute listen-Funktion, welche die gleichen Argumente annimmt. Lediglich die Funktion use ist neu. Diese Funktion nimmt sogenannte Middleware als Parameter entgegen.

Middleware ist eine Funktion, welche Requests entgegen nimmt und sie in Responses abarbeitet. Soweit nichts Neues im Vergleich zu einem normalen Server. Die Besonderheit von Middleware ist, dass mehrere Middleware-Funktionen hintereinander geschalten werden können. Die Middleware-Funktionen werden dann bei einem Request der Reihe nach abgerufen. Eine Middleware kann jedoch auch verhindern, dass nachfolgende Middleware aufgerufen werden soll. Middleware kapselt bestimmte Logiken – zum Beispiel die Logik eines statischen Dateiservers – und macht sie so wiederverwendbar.

Connect ist ein Middleware Framework. Es ermöglicht das Einschleusen von Middleware über use und stellt eine Reihe eigener Middleware-Funktionen wie connect.static für einen statischen Dateiserver zur Verfügung. Middleware kann Parameter zur weiteren Konfiguration entgegennehmen. Bei connect.static kann ein Parameter der Dateipfad zu einem Ordner sein, dessen Dateien über den Server zur Verfügung gestellt werden sollen. In diesem Fall übergeben wir __dirname, eine von Node erstellte Variable, welche den Pfad zum Ordner der aktuellen Datei (also server.js) enthält.

Der statische Dateiserver kann wie gehabt über Node gestartet werden:

$ node server.js

Ruft ihr nun http://127.0.0.1:1337/ im Browser auf, dann erhaltet ihr die Meldung „Cannot GET /“. Dies ist eine Fehlermeldung von Connect, welche besagt, dass sich im Pfad „/“ keine Datei befindet – was auch stimmt. Es handelt sich bei diesem Pfad um einen Ordner und keine Datei. Ruft man stattdessen die Adresse http://127.0.0.1:1337/server.js auf, so zeigt der Browser den Quellcode der server.js an. Er gibt also die Datei an den Browser zurück – der Server funktioniert!

Der statische Dateiserver funktioniert!

An dieser Stelle könnten beliebige HTML-, CSS- und JavaScript-Dateien erstellt und in unseren Projektordner gepackt werden. Der Server gibt jede Datei korrekt aus und wenn ein Projekt keine dynamischen Daten aus einer Datenbank oder andere Funktionen benötigt, reicht dies bereits aus um einfache Webprojekte zu realisieren.

Die komplette Übersicht über jede Middleware, die Connect mitliefert, befindet sich unter http://www.senchalabs.org/connect/. Connect wird hauptsächlich von TJ Holowaychuk entwickelt.

Im nächsten Artikel erkläre ich euch das Framework Express, welches die Funktionen von Connect noch erweitert.

Autor: Pipo

...kommt ursprünglich aus der Designerecke, ist aber im Laufe seines Studiums in die Webentwicklung gestolpert. Kann sich seit dem nicht so richtig entscheiden wo er hingehört und wagt deswegen vielleicht die Flucht nach vorne in ein komplett neues Gebiet. Vielleicht Management? Niemand weiß es. Auch er nicht.