How-To

Javascript mit Struktur: Patterns für performante Anwendungen

Seite 3 / 3

Dabei handelt es sich um nichts anderes als eine konkrete Implementierung des Observer-Patterns. Events registrieren Callback-Funktionen auf einem Objekt und laufen ab, wenn ein bestimmtes Ereignis eintritt. In diesem Fall sind die Callback-Funktionen die „Observer“ und das Objekt das „Observable“. In der täglichen Arbeit begegnet Entwicklern dieses Muster mit Sicherheit immer wieder. Beispielsweise ist jedes Element im DOM des Browsers ein Observable.

Gleiches gilt für den Webserver in Node.js, dessen Events Programmierer registrieren können. So haben sie die Möglichkeit, nicht nur die bestehenden Events bestimmter Objekte nutzen, sondern auch das Event-System in den Klassen und Objekten ihrer Applikation. Sie müssen nur eine Schnittstelle schaffen, über die sie die Callback-Funktionen registrieren. Typischerweise trägt eine solche Methode den Namen „on“. Außerdem benötigen die Entwickler eine Methode, über die sie die Events auslösen – häufig „emit“ genannt. Das nachfolgende Listing enthält den Quellcode für ein sehr einfaches Event-System mit Node.js.

Listing: Events mit Node.js


const EventEmitter = require('events');

class MessageBus extends EventEmitter {}

const msgBus = new MessageBus();

msgBus.on('someEvent', (data) => {
console.log(data);
});

msgBus.emit('someEvent', 'Hello World');


Entwickler sollten sich informieren, ob es für ihre Umgebung schon eine Implementierung gibt, bevor sie ihr eigenes Event-System realisieren. Im Browser können sie beispielsweise auf das jQuery-Event-System zugreifen oder serverseitig den Node.js-EventEmitter nutzen. Diese Implementierungen decken Standardfälle und Edge-Cases ab, deren Lösung sonst nur unnötig Zeit und Arbeit kosten.

Streams

Eine konkrete Implementierung eines Event-Systems sind Datenströme, auch Streams genannt. Diese gibt es sehr häufig in Node.js und mittlerweile auch verstärkt im Browser-Umfeld. Die Idee dahinter ist, dass sich der Informationsfluss in einer Applikation auch im Quellcode darstellen lässt. Der Entwickler kann diesen Datenstrom modifizieren, filtern, teilen oder auch zusammenführen. Mit diesem Muster kann er also den Datenfluss einer Web-Applikation vom Client zum Server und zurück sehr gut modellieren. Das etablierte Konzept von Datenströmen ist in Form von Unix-Pipes auch auf Betriebssystemebene anzutreffen.

Auch viele andere Sprachen kennen kontinuierliche Datenströme, die stets asynchron sind. Um sie zu implementieren, greifen Entwickler auf eine Event-Architektur zurück. Sie wissen in diesem Fall nicht, wann und wie viele Ereignisse in diesem Stream auftreten. Eines der vielen Umsetzungen dieses Patterns ist eben das stream-Modul von Node.js, auf dem auch das Build-System Gulp aufbaut. Dieses Werkzeug erledigt regelmäßig wiederkehrende Aufgaben im Build-Prozess einer Applikation wie das Minifizieren oder die Analyse des Quellcodes in Form von Streams.

Fazit

Javascript-Applikationen sind längst mehr als nur eine lose Sammlung von Funktionen, die Programmierer an die Events ihrer Formularelementen binden. Mittlerweile gibt es zahlreiche Erweiterungen des Sprachstandards sowie Bibliotheken und Frameworks, die Entwicklern dabei helfen, ihre Applikation zu strukturieren und performante, lesbare und wiederverwendbare Module zu erhalten, die in der Summe leistungsfähige Applikationen ergeben.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Ein Kommentar
Thomas
Thomas

Vielen Dank für den (eher) generellen Überblick. Mehr von solchen Artikeln!

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung