senäh

17senäh und so…

HTML/CSS/JS
09. Okt 2013
Kommentare: 1

Definition des MEAN Stacks

Kategorien: HTML/CSS/JS | 09. Okt 2013 | Kommentare: 1

Serie: Einführung in den MEAN Stack

In einer neuen Artikelserie möchte ich euch einen Einstieg in den sogenannten MEAN Stack bieten. Dies stellt eine Gruppe von verschiedenen Technologien dar, die einen die Entwicklung von Webapplikationen erleichtern. Im ersten Artikel dieser Serie erkläre ich euch den Begriff näher und formuliere die Ziele dieser Serie.

Ein Stack (engl. „Stapel“) ist eine Zusammenstellung verschiedener Technologien zur Lösung einer bestimmten Aufgabe. Ziel des MEAN Stacks ist es die Entwicklung von Webapplikationen zu verbessern und zu beschleunigen. Der MEAN Stack besteht aus der NoSQL-Datenbank MongoDB, dem serverseitigen Framework Express, dem clientseitigen Framework AngularJS und der Serverlaufzeitumgebung Node.js. Die Anfangsbuchstaben dieser vier Frameworks ergeben MEAN. All diese Frameworks basieren auf oder kommunizieren über JavaScript. Die Reduzierung auf eine primäre Entwicklungssprache ist ein wesentlicher Bestandteil des MEAN Konzepts und soll so den Entwicklungsprozess beschleunigen und verbessern.

Der MEAN Stack steht in direkter Konkurrenz zum klassischen LAMP Stack, welcher für Linux, Apache, MySQL und PHP bzw. Perl oder Python steht. Wahlweise kann Linux auch durch Mac bzw. Windows ersetzt werden, sodass man von MAMP bzw. WAMP spricht. Die wesentlichen Unterschiede zu LAMP sind die Wahl einer NoSQL-Datenbank und eines nichtblockenden Eingabe-Ausgabe-Modells zum Ausführen der serverseitigen Skripte. Beide Begriffe werden in den nachfolgenden Artikeln näher erklärt.

MEAN ist im Wesentlichen ein Marketingwort. Es kann als Anspielung auf das Konzept Lean (engl. „schlank“) verstanden werden, welches häufig in Zusammenhang mit Lean Management, Lean Startup oder Lean Software Development genannt wird. Lean beschreibt allgemein eine Vereinfachung von Prozessen und dem Vermeiden von unnötigen Aufgaben. MEAN unterstützt dieses Konzept.

Der Ursprung der Bezeichnung MEAN geht auf Valeri Karpov zurück, der am 29. April 2013 den Blogartikel „The MEAN Stack: MongoDB, ExpressJS, AngularJS, and Node.js“ veröffentlichte. Größere Bekanntheit erhielt der Begriff einen Tag später durch eine zweite Veröffentlichung auf dem offiziellen MongoDB-Blog. Die Idee JavaScript durchgängig für die Entwicklung von Webapplikationen zu verwenden ist jedoch bereits älter.

Der Begriff MEAN sollte nicht zu strikt gesehen werden, sondern vor allem als Konzept und Einstieg in einen JavaScript-basierten Technologie-Stack. Einzelne Komponenten ließen sich durchaus austauschen und den eigenen Vorlieben und –kenntnissen anpassen. So ließe sich die Datenbank MongoDB problemlos durch CouchDB ersetzen oder AngularJS durch das ähnliche Framework Ember.js.

MEAN bezeichnet außerdem nicht den vollständigen Technologie-Stack. So basiert Express auf dem serverseitigen Framework Connect, welches im Folgenden ebenfalls vorgestellt wird. Viele Entwickler verwenden zur Kommunikation zwischen Node.js und MongoDB eine weitere Abstraktionsschicht wie Mongoose. Zusätzlich werden clientseitig zur Darstellung der Applikation HTML und CSS verwendet, deren Entwicklung durch zusätzliche Frameworks wie Bootstrap ebenfalls vereinfacht werden kann. Damit blieben immer noch Testing Frameworks, Build Systeme und Preprocessors unbeachtet, welche aber ebenfalls Teil eines modernen Entwicklungsworkflows sind. Man kann deswegen auch von MEAN+ oder MEAN* sprechen.

Auch wenn all diese Technologien und Frameworks die Entwicklung von Webapplikationen vereinfachen, so sind sie zusammengenommen doch ein komplexes Geflecht aus unterschiedlichen Konventionen und APIs, welche gerade für Neueinsteiger sehr verwirrend sein können. Die folgenden Artikel erleichtern den Einstieg in die Thematik und führen Schritt für Schritt durch die zuvor genannten Technologien. Am Ende der Artikelserie werden wir eine kleine Webapplikation mit Hilfe der vorgestellten Technologien entwickeln.

Zum Schluss ein paar Hinweise: Die späteren Beispiele habe ich unter Mac OS X 10.8.5 entwickelt. Während der MEAN Stack generell plattformunabhängig ist und auch unter Linux, Windows oder älteren Mac OS X Versionen funktioniert, gehe ich nicht weiter auf diese Plattformen ein. Außer einigen Unterschieden bei Kommandozeilenbefehlen und den Installationsanweisungen sollten die Erklärungen jedoch für jede Plattform gleichermaßen gelten.

Diese Artikelserie richtet sich außerdem an fortgeschrittene Entwickler, welche keine Erfahrung mit dem MEAN Stack haben. Die Funktionsweise eines Terminals oder die Syntax von JavaScript werden deswegen innerhalb dieser Serie nicht näher erklärt. In den Beispielen werden auch nicht alle Codezeilen einzeln erklärt, sondern lediglich technologiespezifische oder für die nachfolgende Erklärung relevante Konzepte bzw. APIs. Ich lasse auch häufig Best Practices bewusst ungenannt, um nicht zu viele Informationen auf einmal zu vermitteln. Das oberste Ziel dieser Serie ist es einen schnellen und praktischen Einstieg in die Thematik zu vermitteln. Aus diesem Grund werden innerhalb dieser Serie eine Reihe von Frameworks verwendet, welche die Entwicklung vereinfachen. Dadurch bleiben mitunter einige grundlegende, aber auch kompliziertere Funktionen und Konzepte ungenannt.

Solltet ihr deswegen vielleicht etwas nicht verstehen, scheut euch nicht in den Kommentaren nachzufragen.

Im nächsten Artikel werden wir Node und MongoDB installieren, bevor wir mit den Programmierbeispielen anfangen.

Viel Spaß mit der Artikelserie!

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.