Technische Umsetzung
Architekturelle Entscheidungen

Architekturelle Entscheidungen

In diesem Abschnitt werden und kleine Architekturelle Entscheidungen eingegangen, die eine große Auswirkung auf das Projekt hatten.

Library Abstraction

Da das Projekt viele externe Abhängigkeiten verwendet, war es wichtig, dass diese möglichst losgekoppelt von dem generellen Code sind, damit sie einfach und zentral ausgetauscht werden können, sollte dies der Fall sein. Ein gutes Beispiel dafür ist die notify Funktion, die in der Hauptapplikation und auch das Admin-Dashboard. Die verwendet ein externes Add-on namens react-toastify, um Benachrichtigungen anzuzeigen. Statt die Funktion direkt an den verwendeten Stellen einzubinden, wurde die Funktion „notify“ geschrieben, die Logik der Benachrichtigungen abdeckt. So ist nur die notify Funktion im Code referenziert, aber die Bibliothek kann im Hintergrund ausgetauscht werden, ohne dass es im Code zu Fehlern kommt.

Da react-toastify noch Zugriff auf die Zentrale App braucht, ist es nicht möglich die Bibliothek zu 100 % zu abstrahieren. Da es sich hier aber um weniger als 10 Zeilen Code handelt, ist der Einwand noch vereinbar.

Diese Methode der Abstrahierung ist nicht in allen Fällen möglich, es auch Bibliotheken gibt, worauf die gesamte Applikation basiert. Es wurde versucht, so viel wie möglich zu abstrahieren, indem React Custom Hooks verwendet wurde.

Nutzung von React Custom Hooks

Custom Hooks sind im Grunde Codeschnipsel, die kleinen Teile der Funktionen anbietet, die aber in mehreren Komponenten verwendet werden. Über einen Import der Funktionen in den Komponenten können die Funktionen und Werte verwendet werden. In der Hauptapplikation wurden Books größtenteils verwendet. Die wurden je nach Kontext unterteilt. Funktionen, die mit Mausaktionen zu tun hatten, wurden alle gruppiert.

Verwendung von kleinen Bibliotheken für kleine Funktionen

Um kleine Themen möglichst schnell einzubinden, wurden Module importiert, die bereits getestet und oft verwendet werden, statt die Funktionen selbst zu programmieren. Dadurch gehen die Freiheiten über Kontrolle der Funktionen aufgegeben, da es sich um kleine Themen wie Benachrichtigungen oder Generierung von ID Strings handelt, ist es nicht nötig gewesen, große Kontrolle über das System zu haben.

Last updated on January 16, 2023