﻿1
00:00:01,120 --> 00:00:03,120
‫Kursleiter: In diesem

2
00:00:03,120 --> 00:00:06,030
‫und im nächsten Video tauchen wir mit

3
00:00:06,030 --> 00:00:08,870
‫JS-Ereignissen und ereignisgesteuerter Architektur in einen weiteren

4
00:00:08,870 --> 00:00:11,093
‫wichtigen Teil der Node-JS-Architektur ein.

5
00:00:12,370 --> 00:00:15,210
‫Die meisten Kernmodule von Node, wie die

6
00:00:15,210 --> 00:00:19,780
‫von uns bereits verwendeten, wie HTTP, File System und Timers, basieren

7
00:00:19,780 --> 00:00:23,200
‫also auf einer ereignisgesteuerten Architektur, und wir können

8
00:00:23,200 --> 00:00:25,830
‫diese Architektur natürlich auch in

9
00:00:25,830 --> 00:00:28,720
‫unserem eigenen Code zu unserem Vorteil nutzen.

10
00:00:28,720 --> 00:00:31,910
‫Und das Konzept ist eigentlich ganz einfach.

11
00:00:31,910 --> 00:00:34,780
‫In Node gibt es

12
00:00:34,780 --> 00:00:37,843
‫also bestimmte Objekte, die Ereignis-Emitter

13
00:00:37,843 --> 00:00:41,520
‫genannt werden, die benannte Ereignisse ausgeben,

14
00:00:41,520 --> 00:00:45,360
‫sobald etwas Wichtiges in der App

15
00:00:45,360 --> 00:00:47,660
‫passiert, wie z.

16
00:00:47,660 --> 00:00:51,030
‫Diese Ereignisse können dann von Ereignis-Listenern abgeholt

17
00:00:51,030 --> 00:00:54,380
‫werden, die wir Entwickler einrichten, die

18
00:00:54,380 --> 00:00:58,870
‫Callback-Funktionen auslösen, die an jeden Listener angehängt sind, okay.

19
00:00:58,870 --> 00:01:02,150
‫Auf der einen Seite haben wir also

20
00:01:02,150 --> 00:01:05,470
‫Ereignis-Emitter und auf der anderen Seite Ereignis-Listener, die

21
00:01:05,470 --> 00:01:08,940
‫auf ausgegebene Ereignisse reagieren, indem sie die Callback-Funktion aufrufen.

22
00:01:08,940 --> 00:01:10,540
‫Einfach, oder?

23
00:01:10,540 --> 00:01:12,900
‫Und der wahrscheinlich beste Weg, dies zu

24
00:01:12,900 --> 00:01:14,630
‫verstehen, ist ein Beispiel.

25
00:01:14,630 --> 00:01:17,760
‫Lassen Sie uns also kurz verstehen, wie

26
00:01:17,760 --> 00:01:21,330
‫Node die ereignisgesteuerte Architektur verwendet, um Serveranfragen im

27
00:01:21,330 --> 00:01:25,950
‫HTTP-Modul zu verarbeiten, das wir bereits in einem anderen Abschnitt verwendet haben.

28
00:01:25,950 --> 00:01:28,600
‫Wenn wir also einen Server erstellen

29
00:01:28,600 --> 00:01:30,384
‫möchten, verwenden wir die

30
00:01:30,384 --> 00:01:33,900
‫Create Server-Methode und speichern sie in einer Servervariablen.

31
00:01:33,900 --> 00:01:36,260
‫Diese Implementierung hier unterscheidet sich ein wenig

32
00:01:36,260 --> 00:01:40,270
‫von der, die wir zuvor gemacht haben, aber sie funktioniert genau gleich.

33
00:01:40,270 --> 00:01:44,040
‫Wie auch immer, dieser Server. on-Methode erstellen wir

34
00:01:44,040 --> 00:01:49,040
‫tatsächlich einen Listener, und in diesem Fall für das Ereignis "request".

35
00:01:49,070 --> 00:01:51,390
‫Nehmen wir an, unser Server

36
00:01:51,390 --> 00:01:53,770
‫läuft und eine neue Anfrage wird gestellt.

37
00:01:53,770 --> 00:01:57,410
‫Der Server fungiert als Emitter und sendet jedes

38
00:01:57,410 --> 00:02:01,220
‫Mal, wenn eine Anfrage den Server trifft, automatisch ein

39
00:02:01,220 --> 00:02:02,810
‫Ereignis namens "request".

40
00:02:02,810 --> 00:02:04,350
‫Einfach, oder?

41
00:02:04,350 --> 00:02:07,100
‫Da wir bereits einen Listener für

42
00:02:07,100 --> 00:02:10,830
‫genau dieses Ereignis eingerichtet haben, wird die Callback-Funktion, die

43
00:02:10,830 --> 00:02:14,000
‫wir an diesen Listener angehängt haben, automatisch aufgerufen.

44
00:02:14,000 --> 00:02:16,780
‫Und diese Art von Funktion kennen wir bereits

45
00:02:16,780 --> 00:02:20,040
‫von früher, sie sendet einfach einige Daten an den Client zurück.

46
00:02:20,040 --> 00:02:22,970
‫Nun, es funktioniert auf diese

47
00:02:22,970 --> 00:02:26,074
‫Weise, weil der Server hinter den

48
00:02:26,074 --> 00:02:28,980
‫Kulissen tatsächlich eine Instanz der

49
00:02:28,980 --> 00:02:32,500
‫Node JS EventEmitter-Klasse ist alles in

50
00:02:32,500 --> 00:02:35,410
‫Ordnung im nächsten Video, damit

51
00:02:35,410 --> 00:02:38,410
‫Sie sich mit all diesen

52
00:02:38,410 --> 00:02:41,210
‫Logiken vertraut machen.

53
00:02:41,210 --> 00:02:43,340
‫Um diese Vorlesung zu beenden, ist

54
00:02:43,340 --> 00:02:46,800
‫es meiner Meinung nach wichtig zu erwähnen, dass diese

55
00:02:46,800 --> 00:02:49,960
‫EventEmitter-Logik in der Javascript-Programmierung im Allgemeinen als Beobachtermuster

56
00:02:49,960 --> 00:02:53,160
‫bezeichnet wird und ein recht beliebtes Muster mit

57
00:02:53,160 --> 00:02:54,740
‫vielen Anwendungsfällen ist.

58
00:02:54,740 --> 00:02:57,090
‫Die Idee ist also, dort

59
00:02:57,090 --> 00:03:00,370
‫einen Beobachter zu setzen, in diesem Fall der Ereignis-Listener,

60
00:03:00,370 --> 00:03:03,450
‫der weiter wartet, beobachtet weiterhin das Subjekt, das schließlich

61
00:03:03,450 --> 00:03:06,486
‫das Ereignis aussendet, auf das der Listener wartet.

62
00:03:06,486 --> 00:03:09,680
‫Und das Gegenteil dieses Musters sind einfach Funktionen,

63
00:03:09,680 --> 00:03:12,370
‫die andere Funktionen aufrufen, woran wir eigentlich

64
00:03:12,370 --> 00:03:14,530
‫eher gewöhnt sind, oder?

65
00:03:14,530 --> 00:03:16,490
‫Aber das Beobachtermuster wurde

66
00:03:16,490 --> 00:03:19,020
‫entwickelt, um zu reagieren, anstatt zu rufen.

67
00:03:19,020 --> 00:03:22,330
‫Und das liegt daran, dass die Verwendung dieser Architektur

68
00:03:22,330 --> 00:03:25,248
‫einen großen Vorteil bietet, nämlich die Tatsache,

69
00:03:25,248 --> 00:03:27,420
‫dass alles stärker entkoppelt ist.

70
00:03:27,420 --> 00:03:30,340
‫Wir haben zum Beispiel keine Funktionen aus

71
00:03:30,340 --> 00:03:33,610
‫dem Dateisystemmodul, die Funktionen aus dem HTTP-Modul aufrufen, weil

72
00:03:33,610 --> 00:03:35,770
‫dies ein riesiges Durcheinander wäre.

73
00:03:35,770 --> 00:03:38,690
‫Stattdessen sind diese Module schön entkoppelt und in

74
00:03:38,690 --> 00:03:41,470
‫sich abgeschlossen, jedes sendet Ereignisse aus, auf

75
00:03:41,470 --> 00:03:44,380
‫die andere Funktionen reagieren können, selbst wenn sie

76
00:03:44,380 --> 00:03:46,120
‫von anderen Modulen stammen.

77
00:03:46,120 --> 00:03:49,170
‫Außerdem macht es die Verwendung einer ereignisgesteuerten

78
00:03:49,170 --> 00:03:52,390
‫Architektur viel einfacher, mehrmals auf dasselbe Ereignis

79
00:03:52,390 --> 00:03:53,760
‫zu reagieren.

80
00:03:53,760 --> 00:03:58,210
‫Alles, was wir tun müssen, ist, mehrere Listener einzurichten, oder?

81
00:03:58,210 --> 00:04:01,760
‫Okay, und das ist die ereignisgesteuerte Architektur von Node

82
00:04:01,760 --> 00:04:03,020
‫in Kürze.

83
00:04:03,020 --> 00:04:06,050
‫Und keine Sorge, wenn Ihnen dies ein wenig zu

84
00:04:06,050 --> 00:04:08,730
‫theoretisch erscheint, Sie werden diese Logik in

85
00:04:08,730 --> 00:04:12,183
‫vielen Situationen während des Kurses sehen, beginnend mit dem nächsten Video.

