Erste Schritte mit AngularJS
MVC-Frameworks für JavaScript gibt es mittlerweile in Hülle und Fülle. Diese unterscheiden sich nicht nur im Funktionsumfang, sondern auch in der Handhabung und der Dokumentation. Dies macht es nicht gerade einfach ein zum eigenen Projekt passendes Framework auszuwählen.
Da ich nicht der erste bin der vor dieser Entscheidung steht konnte ich glücklicherweise auf die Arbeit von TodoMVC zurückgreifen. Zahlreiche Freiwillige haben sich die Mühe gemacht die immer gleiche Todo-Anwendung in den einzelnen Frameworks zu implementieren. So sind mittlerweile über 50 verschiedene Frameworks vertreten und lassen sich recht einfach vergleichen.
Nachdem ich mehrmals gehört hatte wie toll AngularJS sei und mir auch das Beispiel dazu gefallen hat habe ich mir dieses Framework genauer angeschaut. AngularJS wird seit 2009 von Google entwickelt und bietet neben einer Trennung von DOM und Applikationslogik auch einen sehr einfachen Einstieg.
Data Binding inklusive
Das Konzept von Data Binding in Silverlight und WPF hat mir immer schon gefallen. Bei AngualJS ist dies von Grund auf integriert und hilft einem so wie bei den XAML-Varianten mit sehr wenig Code das GUI an die Daten in einem Modell zu binden. Die dazu passende Mini-Anwendung kommt mit 13 Zeilen Code aus:
Führt man diesen Code im Webbrowser aus funktioniert das Data Binding wie erwartet
JSON verarbeiten
Will man Daten anzeigen die als JSON formatiert sind ist dies ebenfalls ohne grossen Aufwand möglich - ausser die Daten kommen von einem anderen Server. In dem Fall stösst man schnell auf die Abkürzung CORS (Cross-origin resource sharing) und muss daran denken die Headerzeilen zu modifizieren. Ist dies geschafft muss man nur noch den Endpunkt angeben und die Daten korrekt auslesen.
Zum Testen nutzte ich den Service https://md5.jsontest.com der einen Parameter text
ausliest und den dazugehörigen MD5 Wert mit dieser JSON-Antwort zurückliefert:
Um den Service aufzurufen genügt dieser Code:
Damit all dies funktioniert braucht es die Parameter $scope
und $http
beim Methodenaufruf. Dies signalisiert AngularJS das hier mittels Dependency Injection die passenden Objekte eingefügt werden sollen. Folgt man der Namenskonvention ist der Code ganz einfach und wie durch Magie werden alle Abhängigkeiten korrekt ersetzt. Aber wehe man vertippt sich...
Hilfreiche Ressourcen
Neben der offiziellen Dokumentation gibt es zahlreiche weitere Blogs und Videos die einem beim verstehen dieses Frameworks helfen. Wie immer freue ich mich auch bei diesem Thema um weitere Links zu guten Unterlagen.
K. Scott Allen hat in den letzten Monaten zu fast allen Aspekten von AngularJS ausführlich gebloggt. Neben Themen für Einsteiger hat er dabei auch etliche fortgeschrittener Problemstellungen betrachtet.
Für einen strukturierten Einstieg hat mir die Serie "Show me AngularJS" bei Tekpub sehr gefallen. Rob Conery zeigt einem dabei nicht nur die schönen Seiten von AngularJS sondern auch was alles für Stolperfallen auf einen warten.
Wer nur wenig Zeit hat findet bei Egghead.io derzeit 45 Videos die jeweils nur wenige Minuten lang sind und sich genau einem einzelnen Aspekt widmen. Diese Fokussierung ist besonders hilfreich wenn man die Antwort auf eine spezifische Frage sucht.
Auch an der NDC Oslo gab es zahlreiche Präsentationen rund um AngularJS. Dabei wurde nicht nur gezeigt wie AngularJS funktioniert sondern auch wie es sich im Vergleich mit anderen Frameworks schlägt – und dies im wahrsten Sinne des Wortes:
- The Abstractions of AngularJS
- Cage Match - EmberJS vs. Angular
- The Javascript Inferno - A Decent Into the Client-side MVC Netherworld
Nächste Schritte
Die ersten Versuche zeigten mir dass ich viele sonst komplexe GUI-Zaubereien mit AngularJS sehr einfach umsetzen kann. Ich habe aber noch zu grosse Lücken im Bereich JavaScript um mit diesem Framework effizient arbeiten zu können. Neben dem vertiefen meiner JavaScript-Kenntnisse will ich überprüfen wie es um die Testbarkeit von AngularJS wirklich steht. Die Ergebnisse werde ich ebenfalls in diesem Blog veröffentlichen.