Tipps und Tricks mit AngularJS, Teil 8: GUIs mit Angular 2 und @ngrx/store (II)

Seite 3: Fazit und Ausblick

Inhaltsverzeichnis

Die Bibliothek @ngrx/store unterstützt Entwickler beim Einsatz des Redux-Musters in Angular 2 und verbessert somit die Wartbarkeit komplexer Anwendungen. Sie ist auf das Wesentliche reduziert und bietet primär eine Store-Implementierung sowie Vorgaben für Reducer. Darüber hinaus kann sie mit dem Provider-Konzept von Angular 2 arbeiten. Wer die Ansätze hinter Redux kennt, sollte rasch mit @ngrx/store zurechtkommen.

Eine Herausforderung beim Einsatz von Redux besteht im Umgang mit Immutables. Das liegt daran, dass JavaScript nicht primär dafür konzipiert wurde und JS-Entwickler den Umgang mit solchen Strukturen nicht unbedingt gewohnt sind. Mit ein wenig Übung und einigen Mustern, die teilweise in den gezeigten Codeauszügen genutzt wurden, lässt sich die Hürde jedoch überwinden. Bibliotheken wie Immutable.js oder seamless-immutable helfen Entwicklern zusätzlich.

Mehr Infos

Weitere Schwierigkeiten bergen tiefe Zustandsbäume. In der betrachteten Anwendung verweist beispielsweise eine Buchung auf einen Passagier. Das bedeutet, dass die Anwendung Passagiere nur schwer losgelöst von Buchungen nutzen kann. Darüber hinaus wird durch den Einsatz von Immutables bei der Änderung eines Passagiers eine Änderung seiner Buchungen notwendig. Die Redux-Community löst das durch ein sogenanntes Normalisieren des State Tree. Danach sind einzelne Objekte nicht mehr ineinander verschachtelt, sondern exisitieren unabhängig voneinander und verweisen über IDs aufeinander. Das ist vergleichbar mit dem Einsatz von Fremdschlüsseln in relationalen Datenbanken. Bibliotheken wie normalizr erleichtern die Arbeit.

Manfred Steyer
ist selbstständiger Trainer und Berater mit Fokus auf Angular 2 und Service-Architekturen. Er schreibt für O'Reilly und heise Developer. In seinem aktuellen Buch "AngularJS: Moderne Webanwendungen und Single Page Applications mit JavaScript" behandelt er die vielen Seiten des populären JavaScript-Frameworks aus der Feder von Google.
(jul)