﻿1
00:00:01,254 --> 00:00:03,100
‫Jonas: In dieser Vorlesung

2
00:00:03,100 --> 00:00:06,373
‫möchte ich dir verschiedene Dinge mit Modulen zeigen.

3
00:00:07,720 --> 00:00:11,220
‫Und ich möchte Ihnen zunächst grundsätzlich beweisen, dass Node

4
00:00:11,220 --> 00:00:15,300
‫den Code in unseren Modulen tatsächlich in eine Wrapper-Funktion verpackt,

5
00:00:15,300 --> 00:00:17,270
‫wie ich Ihnen in

6
00:00:17,270 --> 00:00:19,420
‫der letzten Vorlesung gezeigt habe.

7
00:00:19,420 --> 00:00:24,043
‫Erstellen wir also wieder eine neue Datei, module. js, und

8
00:00:25,270 --> 00:00:28,543
‫das sind Module, wie diese.

9
00:00:29,900 --> 00:00:31,740
‫Okay, und was ich

10
00:00:31,740 --> 00:00:36,703
‫hier tun werde, ist, die Argumente in die Konsole zu protokollieren, okay?

11
00:00:38,480 --> 00:00:42,170
‫arguments ist also ein Array in JavaScript, und dieses

12
00:00:42,170 --> 00:00:44,490
‫Array enthält alle Werte,

13
00:00:44,490 --> 00:00:47,100
‫die an eine Funktion übergeben wurden.

14
00:00:47,100 --> 00:00:50,490
‫Wenn ich also dieses Argumentarray in der Konsole protokolliere

15
00:00:50,490 --> 00:00:53,110
‫und wir dort tatsächlich einige Werte

16
00:00:53,110 --> 00:00:57,670
‫sehen, bedeutet dies, dass wir uns wirklich in einer Funktion befinden, okay?

17
00:00:57,670 --> 00:01:00,633
‫Lassen Sie uns also Module ausführen.

18
00:01:01,530 --> 00:01:06,530
‫Und tatsächlich haben wir hier den Code in unseren Argumenten.

19
00:01:06,770 --> 00:01:09,050
‫Erinnern wir uns also an die

20
00:01:09,050 --> 00:01:10,760
‫fünf Argumente der Wrapper-Funktion.

21
00:01:10,760 --> 00:01:13,720
‫Der erste ist der Export, also dieser, der

22
00:01:13,720 --> 00:01:14,790
‫derzeit leer

23
00:01:14,790 --> 00:01:17,030
‫ist, weil wir nichts exportieren.

24
00:01:17,030 --> 00:01:19,560
‫Die zweite ist die require-Funktion, also sehen

25
00:01:19,560 --> 00:01:20,670
‫wir, dass

26
00:01:20,670 --> 00:01:23,100
‫wir hier tatsächlich die require-Funktion haben.

27
00:01:23,100 --> 00:01:26,673
‫Dann heißt das dritte Modul, okay.

28
00:01:28,280 --> 00:01:31,420
‫Und im Modul haben wir dann Modul-Exporte, über die wir

29
00:01:31,420 --> 00:01:34,100
‫in der letzten Vorlesung noch einmal gesprochen haben.

30
00:01:34,100 --> 00:01:37,250
‫Und was wir hier haben, ist nicht so wichtig, ich

31
00:01:37,250 --> 00:01:38,520
‫wollte Ihnen nur

32
00:01:38,520 --> 00:01:41,570
‫zeigen, dass wir uns gerade in einer Funktion befinden,

33
00:01:41,570 --> 00:01:43,750
‫sodass der gesamte Code, den wir

34
00:01:43,750 --> 00:01:47,660
‫in diesem Modul haben, tatsächlich in diese Wrapper-Funktion verpackt ist, okay ?

35
00:01:47,660 --> 00:01:50,980
‫Dann sind Nummer drei und Nummer vier der

36
00:01:50,980 --> 00:01:52,640
‫Dateiname und der Verzeichnisname.

37
00:01:52,640 --> 00:01:56,735
‫Und tatsächlich ist dies der Name des Moduls, in dem wir uns gerade

38
00:01:56,735 --> 00:01:59,260
‫befinden, also Module. js.

39
00:01:59,260 --> 00:02:02,450
‫Und dann haben wir hier den Verzeichnisnamen.

40
00:02:02,450 --> 00:02:03,550
‫Also bin ich

41
00:02:03,550 --> 00:02:05,970
‫auf meinem Desktop, und dann in diesem Node-Arbeitsordner.

42
00:02:05,970 --> 00:02:07,740
‫So ähnlich wie

43
00:02:07,740 --> 00:02:11,970
‫hier, aber dann hat dieser den Modulnamen durchgestrichen, okay?

44
00:02:11,970 --> 00:02:14,250
‫Das beweist uns, dass tatsächlich

45
00:02:14,250 --> 00:02:16,800
‫der gesamte Code in einem Modul

46
00:02:16,800 --> 00:02:20,490
‫eingeschlossen ist und dass wir Zugriff auf all diese

47
00:02:20,490 --> 00:02:23,030
‫Variablen haben, also diese Argumente, okay?

48
00:02:23,030 --> 00:02:25,640
‫Ich finde das einfach ein interessantes Experiment, das

49
00:02:25,640 --> 00:02:26,960
‫wir machen können.

50
00:02:26,960 --> 00:02:29,860
‫Und wir können tatsächlich noch eine andere coole Sache machen.

51
00:02:29,860 --> 00:02:32,980
‫Um Ihnen die Wrapper-Funktion

52
00:02:32,980 --> 00:02:37,980
‫tatsächlich zu zeigen, können wir das Modulmodul benötigen, okay.

53
00:02:38,300 --> 00:02:40,200
‫Es gibt also ein Modul

54
00:02:40,200 --> 00:02:44,410
‫namens module, das wir eigentlich nie verwendet haben, aber intern verwendet es Node.

55
00:02:44,410 --> 00:02:47,190
‫Und da drin haben wir die Hülle.

56
00:02:47,190 --> 00:02:49,290
‫Und das ist eigentlich diese Eigenschaft

57
00:02:49,290 --> 00:02:51,030
‫ist eigentlich die Wrapper-Funktion.

58
00:02:51,030 --> 00:02:52,730
‫Das können wir uns jetzt also anschauen.

59
00:02:57,410 --> 00:03:00,140
‫Und wo ist das, ah, ja.

60
00:03:00,140 --> 00:03:01,720
‫Also hier, hier ist es tatsächlich.

61
00:03:01,720 --> 00:03:04,410
‫Dies ist also die Wrapper-Funktion.

62
00:03:04,410 --> 00:03:06,650
‫Und so sehen Sie tatsächlich

63
00:03:06,650 --> 00:03:09,800
‫Export, Anforderung, Modul, Dateiname und Verzeichnisname und

64
00:03:09,800 --> 00:03:11,160
‫dann den Funktionsrumpf.

65
00:03:11,160 --> 00:03:13,520
‫Und das ist es, was Node

66
00:03:13,520 --> 00:03:16,220
‫intern verwendet, also im Grunde dieses Template hier, es

67
00:03:16,220 --> 00:03:20,060
‫verwendet es und füllt dann den Body dieser Funktion mit unserem Code.

68
00:03:20,060 --> 00:03:23,260
‫Okay, also nochmal, nur ein interessantes Experiment hier.

69
00:03:23,260 --> 00:03:25,260
‫Das Wichtigste, was ich Ihnen

70
00:03:25,260 --> 00:03:27,960
‫hier zeigen möchte, ist, wie wir Daten von einem

71
00:03:27,960 --> 00:03:30,370
‫Modul in das andere exportieren und importieren können.

72
00:03:30,370 --> 00:03:33,130
‫Beginnen wir also mit der Erstellung eines neuen Moduls

73
00:03:33,130 --> 00:03:35,280
‫hier, in dem ich einen Taschenrechner erstellen

74
00:03:35,280 --> 00:03:38,040
‫werde, ähnlich wie ich im letzten Video erwähnt habe.

75
00:03:38,040 --> 00:03:42,180
‫Nennen wir das einfach Testmodul-1, denn wir werden

76
00:03:42,180 --> 00:03:44,393
‫ein paar davon haben.

77
00:03:45,300 --> 00:03:47,763
‫Und hier werde ich eine Taschenrechnerklasse erstellen.

78
00:03:49,810 --> 00:03:52,890
‫Dies ist also wieder die

79
00:03:52,890 --> 00:03:56,053
‫ES6-Syntax zum Schreiben von Klassen in JavaScript.

80
00:03:57,260 --> 00:04:01,033
‫Also fügen wir hier ein paar Methoden hinzu, also

81
00:04:04,760 --> 00:04:08,100
‫addieren wir a und b, gibt natürlich a

82
00:04:08,100 --> 00:04:12,920
‫plus b zurück, also sehr einfache Sachen, multiplizieren a, b, gibt a

83
00:04:14,020 --> 00:04:17,317
‫mal b zurück, und dann lass uns

84
00:04:21,785 --> 00:04:22,950
‫einfach auch

85
00:04:22,950 --> 00:04:26,580
‫dividieren, nur der Vollständigkeit halber hier, a, b, so.

86
00:04:29,470 --> 00:04:32,170
‫Speichern Sie es, es formatiert es schön, und

87
00:04:32,170 --> 00:04:36,420
‫jetzt können wir das Modul erstellen. Exporte, genau wie wir im

88
00:04:36,420 --> 00:04:38,370
‫letzten Video gelernt

89
00:04:39,970 --> 00:04:42,690
‫haben, und exportieren unseren Rechner, okay?

90
00:04:42,690 --> 00:04:45,000
‫Also verwenden wir wieder das Modul. exports, wenn

91
00:04:45,000 --> 00:04:48,010
‫wir einen einzelnen Wert exportieren möchten.

92
00:04:48,010 --> 00:04:49,830
‫Und in diesem Fall ist

93
00:04:49,830 --> 00:04:51,660
‫unser einziger Wert hier die Rechnerklasse.

94
00:04:51,660 --> 00:04:55,180
‫Also Modul. exports ist genau das,

95
00:04:55,180 --> 00:04:58,340
‫was von einem Modul zurückgegeben wird, also wird

96
00:04:58,340 --> 00:05:01,320
‫alles, was wir dort ablegen, automatisch exportiert, oder?

97
00:05:01,320 --> 00:05:03,460
‫Wir können den exportierten Wert dann

98
00:05:03,460 --> 00:05:07,023
‫beim Importieren in einer Variablen speichern, also machen wir das jetzt.

99
00:05:08,540 --> 00:05:12,070
‫Und jetzt können wir ihm hier tatsächlich jeden beliebigen Namen geben.

100
00:05:12,070 --> 00:05:15,390
‫Der Name, den wir auf der anderen Seite exportieren, also in

101
00:05:15,390 --> 00:05:17,380
‫diesem anderen Modul, spielt keine Rolle.

102
00:05:17,380 --> 00:05:19,363
‫Wir können es hier nennen, wie wir wollen.

103
00:05:20,810 --> 00:05:24,150
‫In diesem Sinne ist es wie eine normale Funktionsrückgabe, richtig,

104
00:05:24,150 --> 00:05:26,400
‫also können wir immer jede Variable zurückgeben,

105
00:05:26,400 --> 00:05:28,320
‫aber dann anders nennen, wenn

106
00:05:28,320 --> 00:05:31,590
‫wir das Ergebnis einer Funktion im Grunde in einer

107
00:05:31,590 --> 00:05:33,023
‫Variablen speichern, oder?

108
00:05:34,580 --> 00:05:36,780
‫Da es sich um unser

109
00:05:36,780 --> 00:05:41,780
‫eigenes Modul handelt, müssen wir den Schrägstrich verwenden, also das, was ich gerade

110
00:05:42,010 --> 00:05:44,600
‫hier gemacht habe, und dann test-module-1.

111
00:05:44,600 --> 00:05:47,830
‫Und der JS, denk dran, wir können das einfach fallen

112
00:05:47,830 --> 00:05:49,990
‫lassen, es ist nicht nötig, okay?

113
00:05:49,990 --> 00:05:53,560
‫Also diese C-Variable hier, die groß geschrieben

114
00:05:53,560 --> 00:05:57,330
‫ist, weil wir für Klassen normalerweise immer Großbuchstaben verwenden.

115
00:05:57,330 --> 00:06:01,000
‫Und denken Sie daran, dass wir hier tatsächlich eine Klasse exportieren.

116
00:06:01,000 --> 00:06:04,783
‫Okay, wir können diese Klasse jetzt verwenden, um einige Berechnungen durchzuführen.

117
00:06:06,230 --> 00:06:08,853
‫Lassen Sie uns also zuerst einen neuen

118
00:06:10,200 --> 00:06:12,650
‫Taschenrechner erstellen, einen Taschenrechner, denn später werden

119
00:06:12,650 --> 00:06:15,090
‫wir einen anderen haben, okay?

120
00:06:15,090 --> 00:06:18,650
‫Und so erstellen wir jetzt eine neue Instanz eines solchen

121
00:06:18,650 --> 00:06:20,500
‫Taschenrechners, und dies sollte

122
00:06:20,500 --> 00:06:23,290
‫an dieser Stelle für Sie nichts Neues sein.

123
00:06:23,290 --> 00:06:25,900
‫Und dann lassen Sie uns das Ergebnis der tatsächlichen

124
00:06:25,900 --> 00:06:27,793
‫Verwendung über die Konsole protokollieren.

125
00:06:28,850 --> 00:06:33,850
‫Also berechne1. hinzufügen, und sagen wir zwei und fünf.

126
00:06:37,210 --> 00:06:40,443
‫Speichern Sie es und lassen Sie uns diese beiden auskommentieren.

127
00:06:42,550 --> 00:06:45,920
‫Speichern Sie es erneut und dann Node-Module, und hier

128
00:06:45,920 --> 00:06:47,940
‫haben wir das Ergebnis sieben.

129
00:06:47,940 --> 00:06:51,900
‫Das ist also zwei plus fünf, also funktioniert es, oder?

130
00:06:51,900 --> 00:06:54,290
‫Und hier in unserem

131
00:06:54,290 --> 00:06:57,970
‫Testmodul könnten wir es tatsächlich eleganter machen.

132
00:06:57,970 --> 00:07:00,300
‫Wir könnten diese Klasse hier also direkt

133
00:07:00,300 --> 00:07:03,190
‫dem Modul zuordnen. Exporte, oder?

134
00:07:03,190 --> 00:07:06,270
‫Im Moment haben wir also eine Klassendeklaration, das

135
00:07:06,270 --> 00:07:08,570
‫ist also ein bisschen wie

136
00:07:08,570 --> 00:07:12,200
‫eine Funktionsdeklaration, bei der wir Funktionsrechner sagen, und dann dies,

137
00:07:12,200 --> 00:07:14,870
‫und hier sagen wir Klasse, okay?

138
00:07:14,870 --> 00:07:18,520
‫Aber wir könnten es auch mit einem Klassenausdruck machen.

139
00:07:18,520 --> 00:07:22,050
‫Und so verwenden wir den Rechnernamen sowieso

140
00:07:22,050 --> 00:07:23,660
‫einfach nicht.

141
00:07:23,660 --> 00:07:25,023
‫Also kopieren Sie es, kommentieren Sie es aus.

142
00:07:28,450 --> 00:07:30,760
‫Okay, also einfach so.

143
00:07:30,760 --> 00:07:32,650
‫Also sagen wir einfach, dass dies eine

144
00:07:32,650 --> 00:07:34,970
‫Klasse ist, und weisen sie dann einer Variablen zu.

145
00:07:34,970 --> 00:07:36,593
‫Und das ist jetzt ein Ausdruck.

146
00:07:37,600 --> 00:07:39,470
‫Also lass uns das nochmal

147
00:07:39,470 --> 00:07:43,120
‫laufen lassen und wir sehen natürlich wieder unsere Sieben, okay?

148
00:07:43,120 --> 00:07:47,471
‫Auch dies dient nur dazu, den Wert, den wir modulieren

149
00:07:47,471 --> 00:07:50,520
‫möchten, sofort zuzuweisen. exportiert, und das

150
00:07:50,520 --> 00:07:53,280
‫spart uns dann einige Codezeilen und

151
00:07:53,280 --> 00:07:56,473
‫lässt unseren Code wahrscheinlich ein bisschen besser aussehen.

152
00:07:57,390 --> 00:08:01,590
‫Okay, so exportieren wir also Sachen mit dem Modul. exports, und jetzt wollen wir

153
00:08:01,590 --> 00:08:05,160
‫sehen, wie und wann wir die Export-Kurzform verwenden können,

154
00:08:05,160 --> 00:08:07,820
‫die ich auch im vorherigen Video

155
00:08:07,820 --> 00:08:08,973
‫erwähnt habe.

156
00:08:10,970 --> 00:08:14,433
‫Lassen Sie uns hier einfach einen einfachen Kommentar erstellen, Modul. Exporte.

157
00:08:16,930 --> 00:08:19,300
‫Dann hier nur Exporte.

158
00:08:19,300 --> 00:08:24,300
‫Also ein neuer Modultest und nochmal Modul-2. js.

159
00:08:27,930 --> 00:08:31,790
‫Und damit die Alternative zum Do-Modul. exports besteht

160
00:08:31,790 --> 00:08:36,120
‫darin, dem exports-Objekt selbst Eigenschaften hinzuzufügen.

161
00:08:36,120 --> 00:08:37,680
‫Wir könnten es also

162
00:08:37,680 --> 00:08:40,740
‫so machen und wieder das Rechnerbeispiel von vorhin verwenden,

163
00:08:40,740 --> 00:08:42,410
‫wir könnten es so machen.

164
00:08:42,410 --> 00:08:46,253
‫So können wir dem Exportobjekt einfach Eigenschaften hinzufügen.

165
00:08:48,640 --> 00:08:53,640
‫Also geben a und b a plus

166
00:08:54,490 --> 00:08:59,490
‫b, Exporte, zurück. multiplizieren Sie a, b wird a

167
00:09:06,880 --> 00:09:08,280
‫mal b zurückgeben,

168
00:09:10,730 --> 00:09:15,690
‫und jetzt lassen Sie uns der Vollständigkeit halber noch einmal duplizieren, und okay.

169
00:09:15,690 --> 00:09:18,600
‫Wir haben hier also im Wesentlichen drei

170
00:09:18,600 --> 00:09:20,720
‫anonyme Funktionen erstellt, diese

171
00:09:20,720 --> 00:09:24,190
‫drei, und sie drei Eigenschaften von Exporten zugewiesen.

172
00:09:24,190 --> 00:09:27,750
‫Und wenn wir nun dieses Modul auf der anderen Seite

173
00:09:27,750 --> 00:09:31,400
‫exportieren, also in Module. js erhalten wir

174
00:09:31,400 --> 00:09:34,230
‫grundsätzlich Zugriff auf dieses Exportobjekt.

175
00:09:34,230 --> 00:09:36,290
‫Also lass mich dir das zeigen.

176
00:09:36,290 --> 00:09:38,820
‫Nehmen wir an, const calc2 ist erforderlich.

177
00:09:43,490 --> 00:09:46,640
‫Vergessen Sie auch hier nicht Punkt und Schrägstrich, da es

178
00:09:46,640 --> 00:09:48,683
‫sich um unser eigenes Modul handelt.

179
00:09:50,400 --> 00:09:55,400
‫Okay, und nun ist dieser calc2 hier das Exportobjekt.

180
00:09:55,940 --> 00:09:58,800
‫Okay, dann lass mich dir das zeigen.

181
00:09:58,800 --> 00:10:03,207
‫Konsole. log, calc2. hinzufügen, zwei und fünf.

182
00:10:06,670 --> 00:10:09,823
‫Das sollte uns also genau das gleiche Ergebnis liefern wie zuvor.

183
00:10:11,870 --> 00:10:15,313
‫Und tatsächlich, hier ist unsere Sieben, genau wie zuvor.

184
00:10:16,997 --> 00:10:18,147
‫Und wenn

185
00:10:20,240 --> 00:10:24,000
‫wir multipliziert haben, dann sollte das natürlich 10 sein.

186
00:10:24,000 --> 00:10:26,820
‫Also ja, wir haben hier sieben aus der Addition hier,

187
00:10:26,820 --> 00:10:28,793
‫und dann ergibt diese Multiplikation 10.

188
00:10:29,660 --> 00:10:31,460
‫Ich hoffe also, dass dies wirklich einen

189
00:10:31,460 --> 00:10:34,370
‫Unterschied zwischen den Modulen macht. Exporte und Exporte klar.

190
00:10:34,370 --> 00:10:37,150
‫Und wieder, wenn wir einfache Exporte verwenden,

191
00:10:37,150 --> 00:10:41,360
‫können wir diesem Objekt Sachen hinzufügen, also im Grunde Eigenschaften, und

192
00:10:41,360 --> 00:10:43,470
‫wenn wir das dann importieren,

193
00:10:43,470 --> 00:10:45,900
‫also wenn wir dieses Modul benötigen,

194
00:10:45,900 --> 00:10:47,340
‫erhalten wir

195
00:10:47,340 --> 00:10:50,400
‫als Ergebnis ein Objekt mit all diese Eigenschaften.

196
00:10:50,400 --> 00:10:52,180
‫Und da wir ein

197
00:10:52,180 --> 00:10:55,260
‫Objekt bekommen, können wir hier im Grunde die Kraft

198
00:10:55,260 --> 00:10:58,023
‫der ES6-Destrukturierung nutzen, um coole Magie zu vollbringen.

199
00:10:59,000 --> 00:11:02,843
‫Lassen Sie mich diesen also loswerden oder tatsächlich

200
00:11:03,710 --> 00:11:07,690
‫duplizieren, diesen auskommentieren, und so können wir die Destrukturierung

201
00:11:07,690 --> 00:11:12,130
‫verwenden, um das Objekt zu destrukturieren, das wir erhalten, okay?

202
00:11:12,130 --> 00:11:16,140
‫Und es funktioniert so, also verwenden wir die geschweiften Klammern

203
00:11:16,140 --> 00:11:18,200
‫und erstellen dann einfach

204
00:11:18,200 --> 00:11:21,460
‫Variablennamen für die Eigenschaften in diesem Objekt.

205
00:11:21,460 --> 00:11:26,460
‫Lassen Sie uns also wieder Addieren, Multiplizieren und Dividieren verwenden.

206
00:11:26,860 --> 00:11:30,380
‫Das sind also die Namen, die wir tatsächlich

207
00:11:30,380 --> 00:11:32,450
‫für dieses Exportobjekt haben.

208
00:11:32,450 --> 00:11:34,680
‫Also addiere, multipliziere und dividiere,

209
00:11:34,680 --> 00:11:37,080
‫und diese müssen tatsächlich genau den gleichen

210
00:11:37,080 --> 00:11:39,330
‫Namen haben wie im Originalobjekt, okay?

211
00:11:39,330 --> 00:11:41,100
‫Im Grunde wird

212
00:11:41,100 --> 00:11:43,960
‫dadurch eine Variable namens einfach

213
00:11:43,960 --> 00:11:45,523
‫multiplizieren erstellt.

214
00:11:47,820 --> 00:11:50,400
‫Und so ist hier tatsächlich unser Ergebnis.

215
00:11:50,400 --> 00:11:53,980
‫Und wir können eigentlich nur die importieren, die wir wollen.

216
00:11:53,980 --> 00:11:57,470
‫Nehmen wir also an, wir wollen nur addieren und multiplizieren, okay?

217
00:11:57,470 --> 00:12:00,290
‫Und so erhalten wir nur auf diese

218
00:12:00,290 --> 00:12:03,340
‫beiden Zugriff, anstatt alles aus dem Modul zu importieren.

219
00:12:03,340 --> 00:12:05,160
‫Dies ist ein recht häufiges Muster,

220
00:12:05,160 --> 00:12:07,240
‫das Sie in Node sehen werden, und

221
00:12:07,240 --> 00:12:09,930
‫wir werden dies auch während des gesamten Projekts tun.

222
00:12:09,930 --> 00:12:11,630
‫Okay, in diesem Video

223
00:12:11,630 --> 00:12:14,030
‫haben wir hier über die Wrapper-Funktion gesprochen,

224
00:12:14,030 --> 00:12:16,280
‫dann haben wir über das Exportieren

225
00:12:16,280 --> 00:12:20,110
‫und Importieren mit Modulen gesprochen. Exporte und die Kurzform der Exporte.

226
00:12:20,110 --> 00:12:21,810
‫Und jetzt zum

227
00:12:21,810 --> 00:12:24,523
‫Schluss noch einmal kurz über das Caching.

228
00:12:27,060 --> 00:12:30,143
‫Okay, also erstellen wir hier test-module-3.

229
00:12:35,860 --> 00:12:39,603
‫Und was ich hier tun werde, ist eine Konsole zu erstellen. log, also im Grunde

230
00:12:41,070 --> 00:12:44,193
‫genommen ein Code der obersten Ebene in diesem Modul.

231
00:12:46,710 --> 00:12:49,793
‫Hallo aus dem Modul, okay, und dann möchte

232
00:12:50,892 --> 00:12:53,973
‫ich auch noch eine Funktion exportieren.

233
00:12:54,830 --> 00:12:58,770
‫Nur eine einzige Funktion, also Modul. exports

234
00:13:00,920 --> 00:13:05,920
‫equals function ohne Argumente, die sich einfach

235
00:13:06,300 --> 00:13:08,300
‫in der Konsole

236
00:13:10,110 --> 00:13:13,673
‫protokollieren: log diesen schönen Text.

237
00:13:14,920 --> 00:13:17,883
‫Nur ein paar kleine Emojis, damit es ein bisschen knallt.

238
00:13:20,210 --> 00:13:25,133
‫Okay, also fordern wir jetzt dieses Testmodul an.

239
00:13:28,170 --> 00:13:32,070
‫Test-Modul-3, und ich speichere es in keiner Variablen.

240
00:13:32,070 --> 00:13:34,750
‫Stattdessen rufe ich die Funktion sofort auf, ohne

241
00:13:34,750 --> 00:13:37,250
‫sie in einer Variablen zu speichern.

242
00:13:37,250 --> 00:13:38,860
‫Das könnten wir natürlich machen,

243
00:13:38,860 --> 00:13:41,530
‫dann hätten wir die Funktion in einer Variablen und

244
00:13:41,530 --> 00:13:43,070
‫könnten sie dann aufrufen.

245
00:13:43,070 --> 00:13:45,070
‫Aber das ist genau

246
00:13:45,070 --> 00:13:48,530
‫dasselbe, denn dies wird diese Funktion zurückgeben, die wir

247
00:13:48,530 --> 00:13:50,630
‫definiert haben, also diese hier, richtig?

248
00:13:50,630 --> 00:13:53,610
‫Es wird dies zurückgeben, weil wir module verwenden. exports, und

249
00:13:53,610 --> 00:13:57,727
‫dann rufen wir diese Funktion gleich hier auf, okay?

250
00:13:57,727 --> 00:14:00,890
‫Und so machen wir das tatsächlich dreimal.

251
00:14:00,890 --> 00:14:04,980
‫Und denken Sie daran, dass wir Caching in Node. js-Module, was wird Ihrer

252
00:14:04,980 --> 00:14:08,053
‫Meinung nach passieren, wenn wir diesen Code ausführen?

253
00:14:09,580 --> 00:14:13,933
‫Okay, also lass uns das laufen lassen und sehen, was passieren wird.

254
00:14:16,770 --> 00:14:19,460
‫Hier haben wir das Ergebnis, hallo aus

255
00:14:19,460 --> 00:14:22,980
‫dem Modul, und loggen dann dreimal diesen schönen Text ein.

256
00:14:22,980 --> 00:14:26,520
‫Wir haben diese Protokollierung hier also dreimal, weil

257
00:14:26,520 --> 00:14:29,350
‫wir dieselbe Funktion dreimal aufgerufen haben.

258
00:14:29,350 --> 00:14:33,320
‫Aber hallo aus dem Modul haben wir nur einmal, okay?

259
00:14:33,320 --> 00:14:35,450
‫Und das liegt am Caching.

260
00:14:35,450 --> 00:14:38,800
‫Technisch gesehen wurde dieses Modul also nur einmal

261
00:14:38,800 --> 00:14:42,850
‫geladen und der darin enthaltene Code wurde auch nur einmal ausgeführt.

262
00:14:42,850 --> 00:14:46,270
‫Und deshalb wurde diese Codezeile

263
00:14:46,270 --> 00:14:50,370
‫hier, diese Protokollierung nur einmal ausgeführt, okay?

264
00:14:50,370 --> 00:14:53,320
‫Und so kamen diese beiden anderen Protokolle hier, nun

265
00:14:53,320 --> 00:14:56,470
‫ja, sie kamen aus dem Cache, also wurden sie irgendwo

266
00:14:56,470 --> 00:14:58,610
‫im Prozess-Cache des Knotens gespeichert.

267
00:14:58,610 --> 00:15:01,540
‫Und als wir die Funktion hier zum zweiten Mal

268
00:15:01,540 --> 00:15:03,390
‫aufgerufen haben, wurde sie einfach

269
00:15:03,390 --> 00:15:06,520
‫von dort abgerufen, anstatt das Modul erneut zu laden, okay?

270
00:15:06,520 --> 00:15:10,510
‫Also ich bin sicher, das macht für Sie sehr viel Sinn.

271
00:15:10,510 --> 00:15:13,450
‫Und das war eigentlich unser Vortrag.

272
00:15:13,450 --> 00:15:16,090
‫Bei Fragen könnt ihr diese natürlich

273
00:15:16,090 --> 00:15:20,070
‫wie immer im Q&A posten und dort wird euch geholfen.

274
00:15:20,070 --> 00:15:23,030
‫Damit ist dieser gesamte Abschnitt abgeschlossen.

275
00:15:23,030 --> 00:15:27,750
‫Ich weiß, dass es eine ziemliche Fahrt war, bis wir an diesem Punkt

276
00:15:27,750 --> 00:15:30,700
‫ankamen, also eine Menge Dinge zu beachten.

277
00:15:30,700 --> 00:15:33,140
‫Und wenn Sie alles zu 100 %

278
00:15:33,140 --> 00:15:35,240
‫korrigiert haben, machen Sie sich keine

279
00:15:35,240 --> 00:15:36,800
‫allzu großen Sorgen,

280
00:15:36,800 --> 00:15:41,170
‫denn im Laufe des Kurses werden die meisten Dinge irgendwann klar, okay?

281
00:15:41,170 --> 00:15:43,940
‫Machen Sie sich also keine Sorgen, machen Sie einfach im Kurs weiter

282
00:15:43,940 --> 00:15:45,790
‫und wir sehen uns im nächsten Abschnitt.

