1
00:00:00,000 --> 00:00:04,740
[MUSIK]

2
00:00:04,740 --> 00:00:09,065
In dieser Lektion lernen wir, wie wir einfache Benachrichtigungen schreiben können.

3
00:00:09,065 --> 00:00:11,454
Außerdem erfahren wir mehr über Knotenmodule und

4
00:00:11,454 --> 00:00:16,885
wie Knotenmodule es uns ermöglichen, unsere Anwendungen in mehreren Dateien zu organisieren.

5
00:00:16,885 --> 00:00:20,550
Außerdem erfahren wir mehr über die verschiedenen Arten von Node-Modulen und

6
00:00:20,550 --> 00:00:26,450
wie wir Node-Module in unsere Dateien unserer Node-Anwendung importieren und

7
00:00:26,450 --> 00:00:29,260
diese innerhalb unserer Anwendung nutzen können.

8
00:00:29,260 --> 00:00:34,640
Lassen Sie uns zunächst etwas mehr über Knotenmodule in dieser Vorlesung erfahren.

9
00:00:36,720 --> 00:00:39,320
JavaScript, wenn es

10
00:00:39,320 --> 00:00:43,900
zum ersten Mal entworfen wurde, sollte eine Skriptsprache sein, die innerhalb des Browsers verwendet werden soll.

11
00:00:43,900 --> 00:00:49,510
Der kleine Bereich, in dem es verwendet werden sollte, ist also der Browser.

12
00:00:49,510 --> 00:00:54,695
Nun, wie Sie aus dieser Spezialisierung verstehen, ist JavaScript

13
00:00:54,695 --> 00:01:00,822
weit über seine ursprüngliche Absicht hinausgegangen und wird jetzt zum Schreiben von Anwendungen verwendet.

14
00:01:00,822 --> 00:01:04,688
Sowohl mit Frameworks innerhalb des Browsers ausgeführt werden, als

15
00:01:04,688 --> 00:01:09,880
auch Anwendungen auf der Serverseite auszuführen, wie wir in diesem Kurs sehen werden.

16
00:01:11,020 --> 00:01:16,100
JavaScript wurde ursprünglich nie mit irgendwelchen gängigen Bibliotheken entwickelt.

17
00:01:16,100 --> 00:01:20,907
Wenn Sie sich Standard-Programmiersprachen wie C, C++, Java usw. ansehen,

18
00:01:20,907 --> 00:01:24,374
verfügen sie alle über Standardbibliotheken, mit denen Sie auf

19
00:01:24,374 --> 00:01:26,730
die zugrunde liegende Hardware zugreifen können.

20
00:01:26,730 --> 00:01:32,170
Und auch eine strukturierte Art der Organisation der Anwendung in

21
00:01:32,170 --> 00:01:36,880
mehrere Dateien und dann kombinieren sie zusammen, wenn Sie eine Anwendung erstellen.

22
00:01:36,880 --> 00:01:41,580
JavaScript hatte nie eine dieser Unterstützung, als es begann.

23
00:01:41,580 --> 00:01:45,850
Denn wie wir verstehen, wurde JavaScript nicht für

24
00:01:45,850 --> 00:01:48,330
den Zweck entwickelt, für den es heute verwendet wird.

25
00:01:49,420 --> 00:01:50,500
Aber natürlich

26
00:01:50,500 --> 00:01:55,710
verstanden die Leute die Schwierigkeiten, wenn Sie JavaScript

27
00:01:55,710 --> 00:02:01,340
über eine einzelne Datei erweitern müssen, die als Skriptsprache für den Browser verwendet wird.

28
00:02:01,340 --> 00:02:04,750
Wenn Sie nun eine sehr große JavaScript-Anwendung haben,

29
00:02:04,750 --> 00:02:10,020
wird es umständlich, den gesamten Code in einer einzigen Datei zu schreiben.

30
00:02:10,020 --> 00:02:14,890
Und natürlich möchten Sie, dass die Ergebnisse in der Lage sind, Ihre Anwendung in

31
00:02:14,890 --> 00:02:16,830
mehrere Fakten zu unterteilen.

32
00:02:16,830 --> 00:02:21,760
Jetzt, im Gegensatz zu herkömmlichen Programmiersprachen, hatte JavaScript nie eine Möglichkeit,

33
00:02:21,760 --> 00:02:26,945
den Code in mehrere Dateien zu verteilen und sie dann zusammen zu kombinieren.

34
00:02:26,945 --> 00:02:32,095
Dies ist also, wo die CommonJS-API hereinkam

35
00:02:32,095 --> 00:02:35,859
, um diese Lücke zu füllen, die die Anforderungen für eine gemeinsame Anwendung erfüllt.

36
00:02:35,859 --> 00:02:42,832
Und dieses CommonJS-Format definiert ein Modulformat, das verwendet werden kann, um

37
00:02:42,832 --> 00:02:47,282
Ihre JavaScript-Anwendung in mehrere Dateien aufzuteilen.

38
00:02:47,282 --> 00:02:51,151
Und Node nimmt dieses CommonJS-Format an, um

39
00:02:51,151 --> 00:02:55,349
unsere JavaScript-Anwendung in mehrere Dateien zu organisieren.

40
00:02:55,349 --> 00:02:59,861
Und innerhalb von JavaScript

41
00:02:59,861 --> 00:03:03,891
wird jede Datei mit dem CommonJS-Format zu ihrem eigenen Node-Modul.

42
00:03:03,891 --> 00:03:09,841
Lassen Sie uns im Rest dieser Vorlesung ein wenig mehr über Knotenmodule lernen.

43
00:03:09,841 --> 00:03:11,931
Wie ich gerade erwähnt habe,

44
00:03:11,931 --> 00:03:16,280
wird jede Datei in einer Node-Anwendung zu einem eigenen Node-Modul.

45
00:03:16,280 --> 00:03:22,290
Die Datei oder die JavaScript-Datei definiert also die Grenze für ein Node-Modul.

46
00:03:22,290 --> 00:03:26,160
In dieser Datei

47
00:03:26,160 --> 00:03:30,770
stellt die CommonJS-Spezifikation eine Variable namens Modulvariable bereit, die ein JavaScript-Objekt ist.

48
00:03:30,770 --> 00:03:36,070
Und dies gibt Ihnen Zugriff auf die aktuelle Moduldefinition innerhalb einer Datei.

49
00:03:36,070 --> 00:03:41,020
Und auf diesem Modulobjekt haben Sie die

50
00:03:41,020 --> 00:03:45,120
Eigenschaft module.exports, die den Export aus dem aktuellen Modul bestimmt.

51
00:03:45,120 --> 00:03:49,010
Wenn Sie also der Eigenschaft module.exports etwas zuweisen,

52
00:03:49,010 --> 00:03:54,100
wird dies der exportierte Wert aus dem aktuellen Modul.

53
00:03:54,100 --> 00:03:59,070
So dass, wenn dieses Modul in eine andere Datei

54
00:03:59,070 --> 00:04:03,130
unserer Node-Anwendung importiert wird, dann wird alles, was aus diesem Modul exportiert

55
00:04:03,130 --> 00:04:06,860
wird, in der zweiten Anwendung verfügbar.

56
00:04:06,860 --> 00:04:09,330
Wir werden uns in kurzer Zeit ein Beispiel ansehen.

57
00:04:09,330 --> 00:04:13,080
Wenn Sie ein Modul in ein anderes Modul importieren müssen,

58
00:04:13,080 --> 00:04:17,700
wird hier die require-Funktion verwendet, um das Modul zu importieren.

59
00:04:17,700 --> 00:04:23,220
Wie wir in kurzer Zeit feststellen werden, wird die Required-Funktion verwendet,

60
00:04:23,220 --> 00:04:28,800
um ein Node-Modul zu importieren, das in anderen Dateien in die aktuelle Datei definiert ist

61
00:04:28,800 --> 00:04:32,790
, so dass es innerhalb unserer Knoten-Anwendung verwendet werden kann.

62
00:04:33,800 --> 00:04:36,750
Knotenmodule können aus drei Kategorien bestehen.

63
00:04:36,750 --> 00:04:41,842
Wir haben dateibasierte Knotenmodule, in denen wir das Knotenmodul

64
00:04:41,842 --> 00:04:46,270
innerhalb einer Datei innerhalb unserer Anwendung definieren und es innerhalb unserer Anwendung nutzen.

65
00:04:46,270 --> 00:04:51,100
Dann haben wir Kernmodule, die bereits Teil von Node sind.

66
00:04:51,100 --> 00:04:55,610
Die Node Designer hielten diese Kernmodule bewusst klein

67
00:04:55,610 --> 00:04:57,970
, so dass Node klein gehalten werden kann.

68
00:04:57,970 --> 00:05:01,060
Und bieten auch ausreichende Funktionalität

69
00:05:01,060 --> 00:05:05,310
, damit externe Modul-Designer ihre eigenen

70
00:05:05,310 --> 00:05:10,320
Funktionen hinzufügen können, die bei der Entwicklung von Node-Anwendungen genutzt werden können.

71
00:05:10,320 --> 00:05:18,580
Die Kernmodule enthalten also Pfad, Dateisystem, OS, util und ein paar andere.

72
00:05:18,580 --> 00:05:22,670
Wir werden einige von ihnen begegnen, während wir in diesem Kurs weitergehen.

73
00:05:22,670 --> 00:05:25,010
Dann haben wir externe Knotenmodule. Hierbei

74
00:05:25,010 --> 00:05:29,650
handelt es sich um Knotenmodule von Drittanbietern, die von Node-Entwicklern entwickelt und

75
00:05:29,650 --> 00:05:33,210
dann über das Node-Ökosystem verfügbar gemacht werden.

76
00:05:33,210 --> 00:05:40,586
So können diese externen Knotenmodule innerhalb unseres Systems mit NPM installiert werden.

77
00:05:40,586 --> 00:05:45,363
So oft würden Sie sehen, dass wir NPM installieren und

78
00:05:45,363 --> 00:05:50,937
den Namen des Node-Moduls verwenden, und das wird in

79
00:05:50,937 --> 00:05:57,010
unserer Node-Anwendung in einem Ordner namens node_modules Ordner enthalten sein.

80
00:05:57,010 --> 00:06:05,000
Und wir werden externe Knotenmodule in einer späteren Lektion in diesem Kurs begegnen.

81
00:06:05,000 --> 00:06:07,630
Wie nutzen wir Node Module?

82
00:06:07,630 --> 00:06:13,720
Wenn Sie ein Node-Modul in einer anderen Node-Datei in Ihrer Anwendung verwenden

83
00:06:13,720 --> 00:06:16,960
müssen, verwenden Sie die Funktion require.

84
00:06:16,960 --> 00:06:21,180
Ich habe kurz über die Require-Funktion in einer der vorherigen

85
00:06:21,180 --> 00:06:22,440
Folien dort erwähnt.

86
00:06:22,440 --> 00:06:26,420
Die Require-Funktion für dateibasierte Node-Module,

87
00:06:26,420 --> 00:06:29,073
geben Sie dies nach Bedarf an und

88
00:06:29,073 --> 00:06:33,955
geben Sie dann den Pfad zu der Datei an, die das Node-Modul enthält.

89
00:06:33,955 --> 00:06:39,560
Sie würden also require./ sagen, der Modulname, wenn die Datei

90
00:06:39,560 --> 00:06:45,590
in dem aktuellen Ordner existiert, den Ihre Node-Anwendung existiert.

91
00:06:45,590 --> 00:06:51,060
Dies gibt also den relativen Pfad zur Datei vom aktuellen Speicherort an.

92
00:06:51,060 --> 00:06:54,247
Und auch für die Kern- und externen Module

93
00:06:54,247 --> 00:07:00,260
würden Sie sie normalerweise angeben, indem Sie „require“ und den Namen des Moduls sagen.

94
00:07:00,260 --> 00:07:03,090
Sie würden explizit einen Pfad dafür angeben.

95
00:07:03,090 --> 00:07:06,200
Wenn es sich um ein Kernmodul handelt, ist es bereits Teil von Node und daher

96
00:07:06,200 --> 00:07:08,120
wird es automatisch eingeschlossen.

97
00:07:08,120 --> 00:07:13,365
Wenn es sich um ein externes Modul handelt, wird es entweder

98
00:07:13,365 --> 00:07:18,978
im Ordner node_modules im aktuellen Ordner installiert, oder wenn der Node

99
00:07:18,978 --> 00:07:25,327
das externe Modul im Ordner node_modules im aktuellen Ordner nicht findet,

100
00:07:25,327 --> 00:07:31,058
wird es zum nächsthöheren Ordner weitergeleitet, der nach diesem Knotenmodul sucht.

101
00:07:31,058 --> 00:07:33,989
Oder der nächsthöhere Level-Ordner und

102
00:07:33,989 --> 00:07:39,143
die Hierarchie, bis er die Node-Module findet, die

103
00:07:39,143 --> 00:07:44,390
dann importiert werden, um innerhalb Ihrer Node-Anwendung verwendet zu werden.

104
00:07:44,390 --> 00:07:48,040
Wenn es das Knotenmodul in der Hierarchie nicht finden kann,

105
00:07:48,040 --> 00:07:52,640
wird es offensichtlich einen Fehler auslösen, der besagt, dass das Node-Modul fehlt.

106
00:07:52,640 --> 00:07:57,690
Diese Art der Organisation ist sehr nützlich in der Art und Weise,

107
00:07:57,690 --> 00:08:03,220
wie die Knotenanwendungsstruktur definiert ist, da wir

108
00:08:04,840 --> 00:08:08,460
im späteren Teil dieses Kurses mehr begegnen werden.

109
00:08:08,460 --> 00:08:13,530
Mit dieser kurzen Einführung in die Knotenmodule werfen wir einen Blick auf ein Beispiel

110
00:08:13,530 --> 00:08:19,150
, das wir im Rahmen der Übung, die dieser Vorlesung folgt, tun werden.

111
00:08:19,150 --> 00:08:23,210
Wie wir in dieser Vorlesung gelernt haben,

112
00:08:23,210 --> 00:08:28,040
wird die Grenze eines Knotenmoduls durch die Datei definiert, die den Code hier enthält.

113
00:08:28,040 --> 00:08:34,060
Also hier habe ich ein Beispiel für ein Node-Modul, das als rectangle.js definiert ist.

114
00:08:34,060 --> 00:08:38,113
Und da drin kann man sehen, dass ich hier zwei Exporte verwende,

115
00:08:38,113 --> 00:08:42,096
ich sage exports.perimeter und exports.area.

116
00:08:42,096 --> 00:08:47,401
Und Sie werden sehen, dass ich hier nicht module.exports verwende, weil

117
00:08:47,401 --> 00:08:52,740
Exporte selbst auch eine verkürzte Version von module.exports ist.

118
00:08:52,740 --> 00:08:57,057
Wenn Sie also module.exports nicht vollständig verwenden möchten,

119
00:08:57,057 --> 00:09:01,804
sondern nur exportieren möchten, dann ist dies eine andere Möglichkeit,

120
00:09:01,804 --> 00:09:06,316
jene Elemente zu schreiben, die aus den aktuellen Node-Modulen exportiert werden.

121
00:09:06,316 --> 00:09:09,875
Also hier exportieren wir zwei Funktionen, den Umfang und

122
00:09:09,875 --> 00:09:12,750
die Fläche aus dem Rechteck-Knoten-Modul.

123
00:09:12,750 --> 00:09:17,679
Nun, um dieses Modul in einer anderen Datei zu verwenden,

124
00:09:17,679 --> 00:09:21,870
dann werfen wir einen Blick auf die Datei index.js.

125
00:09:21,870 --> 00:09:27,240
Und die erste Zeile in dieser Datei werden Sie feststellen, dass

126
00:09:27,240 --> 00:09:32,220
var rect = require und in Anführungszeichen sagt,. /Rechteck.

127
00:09:32,220 --> 00:09:36,650
Dies spezifiziert also, dass das Rechteck-Modul hier wichtig sein wird,

128
00:09:36,650 --> 00:09:42,090
habe ich innerhalb dieser speziellen Datei der Anwendung verwendet.

129
00:09:42,090 --> 00:09:45,670
So würden wir Node-Module definieren, und

130
00:09:45,670 --> 00:09:50,080
dies ist ein Beispiel für ein dateibasiertes Node-Modul.

131
00:09:50,080 --> 00:09:52,197
Wir werden den Kern und

132
00:09:52,197 --> 00:09:56,438
die externen Knoten Module in späteren Lektionen dieses Kurses begegnen.

133
00:09:56,438 --> 00:10:02,669
( MUSIK)