‫Kursleiter: In diesem
‫und im nächsten Video tauchen wir mit
‫JS-Ereignissen und ereignisgesteuerter Architektur in einen weiteren
‫wichtigen Teil der Node-JS-Architektur ein.
‫Die meisten Kernmodule von Node, wie die
‫von uns bereits verwendeten, wie HTTP, File System und Timers, basieren
‫also auf einer ereignisgesteuerten Architektur, und wir können
‫diese Architektur natürlich auch in
‫unserem eigenen Code zu unserem Vorteil nutzen.
‫Und das Konzept ist eigentlich ganz einfach.
‫In Node gibt es
‫also bestimmte Objekte, die Ereignis-Emitter
‫genannt werden, die benannte Ereignisse ausgeben,
‫sobald etwas Wichtiges in der App
‫passiert, wie z.
‫Diese Ereignisse können dann von Ereignis-Listenern abgeholt
‫werden, die wir Entwickler einrichten, die
‫Callback-Funktionen auslösen, die an jeden Listener angehängt sind, okay.
‫Auf der einen Seite haben wir also
‫Ereignis-Emitter und auf der anderen Seite Ereignis-Listener, die
‫auf ausgegebene Ereignisse reagieren, indem sie die Callback-Funktion aufrufen.
‫Einfach, oder?
‫Und der wahrscheinlich beste Weg, dies zu
‫verstehen, ist ein Beispiel.
‫Lassen Sie uns also kurz verstehen, wie
‫Node die ereignisgesteuerte Architektur verwendet, um Serveranfragen im
‫HTTP-Modul zu verarbeiten, das wir bereits in einem anderen Abschnitt verwendet haben.
‫Wenn wir also einen Server erstellen
‫möchten, verwenden wir die
‫Create Server-Methode und speichern sie in einer Servervariablen.
‫Diese Implementierung hier unterscheidet sich ein wenig
‫von der, die wir zuvor gemacht haben, aber sie funktioniert genau gleich.
‫Wie auch immer, dieser Server. on-Methode erstellen wir
‫tatsächlich einen Listener, und in diesem Fall für das Ereignis "request".
‫Nehmen wir an, unser Server
‫läuft und eine neue Anfrage wird gestellt.
‫Der Server fungiert als Emitter und sendet jedes
‫Mal, wenn eine Anfrage den Server trifft, automatisch ein
‫Ereignis namens "request".
‫Einfach, oder?
‫Da wir bereits einen Listener für
‫genau dieses Ereignis eingerichtet haben, wird die Callback-Funktion, die
‫wir an diesen Listener angehängt haben, automatisch aufgerufen.
‫Und diese Art von Funktion kennen wir bereits
‫von früher, sie sendet einfach einige Daten an den Client zurück.
‫Nun, es funktioniert auf diese
‫Weise, weil der Server hinter den
‫Kulissen tatsächlich eine Instanz der
‫Node JS EventEmitter-Klasse ist alles in
‫Ordnung im nächsten Video, damit
‫Sie sich mit all diesen
‫Logiken vertraut machen.
‫Um diese Vorlesung zu beenden, ist
‫es meiner Meinung nach wichtig zu erwähnen, dass diese
‫EventEmitter-Logik in der Javascript-Programmierung im Allgemeinen als Beobachtermuster
‫bezeichnet wird und ein recht beliebtes Muster mit
‫vielen Anwendungsfällen ist.
‫Die Idee ist also, dort
‫einen Beobachter zu setzen, in diesem Fall der Ereignis-Listener,
‫der weiter wartet, beobachtet weiterhin das Subjekt, das schließlich
‫das Ereignis aussendet, auf das der Listener wartet.
‫Und das Gegenteil dieses Musters sind einfach Funktionen,
‫die andere Funktionen aufrufen, woran wir eigentlich
‫eher gewöhnt sind, oder?
‫Aber das Beobachtermuster wurde
‫entwickelt, um zu reagieren, anstatt zu rufen.
‫Und das liegt daran, dass die Verwendung dieser Architektur
‫einen großen Vorteil bietet, nämlich die Tatsache,
‫dass alles stärker entkoppelt ist.
‫Wir haben zum Beispiel keine Funktionen aus
‫dem Dateisystemmodul, die Funktionen aus dem HTTP-Modul aufrufen, weil
‫dies ein riesiges Durcheinander wäre.
‫Stattdessen sind diese Module schön entkoppelt und in
‫sich abgeschlossen, jedes sendet Ereignisse aus, auf
‫die andere Funktionen reagieren können, selbst wenn sie
‫von anderen Modulen stammen.
‫Außerdem macht es die Verwendung einer ereignisgesteuerten
‫Architektur viel einfacher, mehrmals auf dasselbe Ereignis
‫zu reagieren.
‫Alles, was wir tun müssen, ist, mehrere Listener einzurichten, oder?
‫Okay, und das ist die ereignisgesteuerte Architektur von Node
‫in Kürze.
‫Und keine Sorge, wenn Ihnen dies ein wenig zu
‫theoretisch erscheint, Sie werden diese Logik in
‫vielen Situationen während des Kurses sehen, beginnend mit dem nächsten Video.