Orientierung im Framework-Dschungel

10. Dezember 2018

Veröffentlicht in:

Webentwicklung

Orientierung im Framework-Dschungel

Wann macht die Verwendung eines Frameworks wirklich Sinn?

Mit der Verwendung von Frameworks können sich Entwickler auf die einzigartige Funktionalität ihrer Anwendung konzentrieren, die diese von anderen Webanwendungen unterscheidet. Dies wird ermöglicht, indem man auf Frameworks zurückgreift, die schnelle Möglichkeiten zum Implementieren von Funktionen auf Foundation-Ebene bereitstellen: Datenbankmanipulation, Benutzerauthentifizierung, und dergleichen. Nicht nur die Verwendung eines Frameworks hilft dabei, schneller zu arbeiten, sondern auch die Verwendung gut strukturierter und Community-getesteter Code-Bibliotheken, die hoffentlich guten Codierungsstandards folgen und für einen effizienten Betrieb optimiert sind. Wir alle wissen, dass die Anzahl und Vielfalt der JavaScript UI-Frameworks überwältigend sein kann und es unglaublich schwierig ist, mit allem Schritt zu halten. Viele Programmierer sind, seit sie zum ersten Mal Web-Komponenten mit dem Versprechen wahrer Interoperabilität und Portabilität ihrer Funktionalität entdeckt und verwendet haben, fasziniert von der Möglichkeit, Web-Komponenten-Sets über ein monolithisches Framework wie AngularJS zu verwenden.

Der Aufbau einer eigenen Bibliothek ist zwar lehrreich und fördert den Überblick über die eigenen Projekte, aber man braucht auch viel Zeit, um sie zu entwickeln. Wenn Entwickler etwas brauchen, das mit einer vorhandenen Bibliothek gemacht werden kann, geht es oft schneller (wenn es die richtige ist) wenn man auf diese zurückgreift. Falls es sich dabei um Open Source handelt, können Entwickler tief in die eingesetzte Bibliothek hineinschauen und auch viel lernen - aber das erfordert natürlich ebenfalls Zeit.

Natürlich ist die exakte Antwort auf die Frage, ob wir Frameworks unbedingt benötigen, zunächst "nein". Es geht immer auch ohne Frameworks. Aber wie bei vielem hängt eine praxistaugliche Antwort auf diese Frage von der jeweiligen Komplexität, der geplanten zukünftigen Unterstützung und anderen Dingen ab. Es ist eine Gratwanderung, aber immer zu denken, dass man besser beraten ist alles selbst zu machen, ist oft eine schlechte Idee. Manchmal bietet es sich auch an, (Open Source) Arbeiten Anderer zu erweitern.

Vorteile von Frameworks

Es ist nach wie vor sehr beliebt, umfangreiche Frameworks zur Verfügung zu stellen und zu verwenden. Es ist, als ob man auch als einzelner Entwickler auf ein ganzes Expertenteam zurückgreifen würde. Framework-Code wurde auf eine Weise geprüft und getestet, die ein einzelnes Unternehmen oder gar ein einzelner Mitarbeiter nur schlecht leisten kann. Framework-Code wurde oft in Millionen verschiedener Szenarien auf Tausenden verschiedener Plattformen verwendet und wurde zudem häufig von erfahrenen Branchenexperten geschrieben.

Ein modernes JavaScript-Framework stellt in der Regel eine API bereit, um die folgenden wichtigen Aspekte der Web-Anwendungsentwicklung zu behandeln:

  • Routing & Templates - Verknüpft komplexe URL-Strukturen mit Sichten und / oder Zuständen
  • Services - API-Interaktionen über Komponenten via HTTP oder Sockets
  • Abhängigkeiten - Die Fähigkeit, Codeabhängigkeiten zu verfolgen und die Wiederverwendung zu vereinfachen
  • Helfer - Einfache Funktionen, um gängige Aufgaben mit JavaScript zu erleichtern (z. B. forEach)

Wer ein monolithisches Framework wie AngularJS verwendet, stellt fest, dass diese vier Elemente perfekt zusammen arbeiten und mit umfangreicher Dokumentation bereitgestellt werden, sowohl offiziell und über die Community - was von unschätzbarem Wert ist.

Wenn Entwickler viele Datensätze laden und diese an Felder in mehreren Ansichten gebunden sind, wird ein Framework sehr wahrscheinlich nützlich sein. Ähnlich verhält es sich, wenn Anwendungen eine vielseitige oder hierarchische Navigation haben. Frameworks fügen oft noch anderen Wert auf eine Weise hinzu, die zeitaufwendig und komplex zu implementieren wäre - aber dies hängt stark vom Framework und der Fähigkeit des Entwicklers ab, ihren Nutzen zu realisieren. Solche "Extras" können so vielfältig sein wie Tests, Gerätekompatibilität oder Metriken.

Wenn wir nicht zu viele Abhängigkeiten und bedingte Zustandsänderungen haben, die Auswirkungen zwischen Datensätzen haben, ist es nicht übermäßig schwierig, diese zu beherrschen, indem man Zustände zunächst via Javascript festhält und dann das DOM und den Server aktualisiert. Entwickler können im Prinzip einfach ein Dictionary mit Feldern durchlaufen, die mit entsprechenden IDs markiert werden. Etwas einfacher funktioniert das mit jQuery oder etwas vergleichbarem. Vielleicht hat man auch nur ein paar Ansichten und keine dynamischen Daten? Man könnte die einfache Navigation sogar fast vollständig mit CSS aktualisieren, um eine DOM-Manipulation zu vermeiden.

Nachteile von Frameworks

Der Nachteil eines monolithischen Frameworks ist, dass man auf ein einziges Pferd setzt. Wenn Anwendungen wachsen, ist man immer stärker auf dieses eine Framework angewiesen und wird oft darauf warten, dass die Entwickler neue Funktionen hinzufügen, um das Framework in Einklang mit neueren Technologien zu bringen.

Die Verwendung eines Frameworks ist potenziell ein Gewinn und das Potenzial erhöht sich mit der Komplexität der jeweiligen Anwendung. Aber was ist mit der zukünftigen Unterstützung? Wenn in einigen Jahren jemand Änderungen durchführen soll, der mit dem Projekt nicht vertraut ist (was in ein paar Jahren auch den ursprünglichen Entwickler selbst einschließt - dessen Ansätze werden anders sein und er wird sich kaum im Detail erinnern, was er damals getan hat), dann ist der Code umso besser, je einfacher er ist.

Leider ist die Welt der Frameworks recht schnelllebig (insbesondere im Frontend-Bereich) und daher kann es schwierig sein, mit Frameworks und deren Entwicklung Schritt zu halten. Daher kann ein solches Framework die Wartbarkeit im Gegensatz zu einfach selbsterklärendem JS auch verringern. Werden die Frameworks, an die wir uns inzwischen gewöhnt haben künftig bleiben? Oder sind im Laufe der Jahre nicht nur viele Frameworks entstanden und wieder verschwunden, sondern ist es vielleicht an der Zeit, dass das Konzept Framework selbst verschwindet?

Der Kompromiss

In vielen Fällen lohnt es sich wahrscheinlich, einen Kompromiss zu wagen und zu versuchen, die Grundlagen selbst zu implementieren. Wenn man dann auf eine ausreichend harte Wand stößt, ist immer noch Zeit, auf ein Framework zu wechseln. Zumindest wird man dann genau wissen, warum man sich eines Frameworks bedient - und nicht nur einem Trend folgen.

Ein Teil der JavaScript-Community hat inzwischen auch begonnen, sich in Richtung Mikro-Frameworks / Bibliotheken (etwa http://microjs.com) zu bewegen, die (angeblich) leicht austauschbar sind - das "Pick-and-Mix" der JavaScript-Welt. Es wäre oft interessant zu erfahren, wie die Kombination mancher Web-Komponenten zusammen mit einigen Mikrobibliotheken in einem realen Szenario im Vergleich mit einem Framework wie AngularJS abschneiden würde.

Können wir weiterhelfen?

Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!

Kostenloses Erstgespräch

Bildnachweis/e: icons by iconfinder.com