﻿1
00:00:01,170 --> 00:00:02,830
‫Dozent: Um die

2
00:00:02,830 --> 00:00:04,710
‫Bühne für die nächsten Vorlesungen

3
00:00:04,710 --> 00:00:08,083
‫zu bereiten, lernen wir zunächst etwas über die Node-Architektur.

4
00:00:09,430 --> 00:00:11,980
‫Lassen Sie uns diese Architektur hier in

5
00:00:11,980 --> 00:00:14,610
‫Bezug auf die Abhängigkeiten von Node darstellen,

6
00:00:14,610 --> 00:00:16,620
‫die nur ein paar

7
00:00:16,620 --> 00:00:20,300
‫Bibliotheken sind, von denen Node abhängt, um richtig zu funktionieren.

8
00:00:20,300 --> 00:00:23,320
‫Die Node-Laufzeit hat also mehrere Abhängigkeiten,

9
00:00:23,320 --> 00:00:25,010
‫und die

10
00:00:25,010 --> 00:00:29,030
‫wichtigsten sind die V8-Engine (murmelt) und libuv.

11
00:00:29,030 --> 00:00:32,800
‫Nun haben wir vorher gesagt, dass Node eine JavaScript-Laufzeit ist, die

12
00:00:32,800 --> 00:00:35,570
‫auf der V8-Engine von Google basiert, oder?

13
00:00:35,570 --> 00:00:39,140
‫Deshalb erscheint es hier als Abhängigkeit.

14
00:00:39,140 --> 00:00:42,620
‫Ohne V8 hätte Node absolut keine Möglichkeit, den

15
00:00:42,620 --> 00:00:45,980
‫von uns geschriebenen JavaScript-Code zu verstehen.

16
00:00:45,980 --> 00:00:48,770
‫Daher ist V8 ein grundlegender

17
00:00:48,770 --> 00:00:50,880
‫Bestandteil der Node-Architektur.

18
00:00:50,880 --> 00:00:55,450
‫Auch hier ist die V8-Engine das, was JavaScript-Code in Maschinencode

19
00:00:55,450 --> 00:00:59,470
‫umwandelt, den ein Computer tatsächlich verstehen kann.

20
00:00:59,470 --> 00:01:03,370
‫Okay, aber das allein reicht nicht aus, um ein komplettes

21
00:01:03,370 --> 00:01:05,380
‫serverseitiges Framework wie Node.

22
00:01:05,380 --> 00:01:09,100
‫Deshalb haben wir auch libuv in Node.

23
00:01:09,100 --> 00:01:12,380
‫Und libuv ist eine Open-Source-Bibliothek mit einem

24
00:01:12,380 --> 00:01:15,060
‫starken Fokus auf asynchrone IO.

25
00:01:15,060 --> 00:01:16,860
‫Also Input-Output.

26
00:01:16,860 --> 00:01:19,500
‫Diese Schicht gibt Node Zugriff

27
00:01:19,500 --> 00:01:21,790
‫auf das zugrunde liegende

28
00:01:21,790 --> 00:01:25,240
‫Computerbetriebssystem, das Dateisystem, das Netzwerk und mehr.

29
00:01:25,240 --> 00:01:28,440
‫Darüber hinaus implementiert libuv auch zwei äußerst wichtige Funktionen

30
00:01:28,440 --> 00:01:30,540
‫von Node. JS, die

31
00:01:30,540 --> 00:01:34,010
‫die Ereignisschleife und auch der Thread-Pool sind.

32
00:01:34,010 --> 00:01:37,130
‫Und in einfachen Worten ist die Ereignisschleife

33
00:01:37,130 --> 00:01:40,430
‫für die Abwicklung einfacher Aufgaben wie das Ausführen

34
00:01:40,430 --> 00:01:44,790
‫von Rückrufen und Netzwerk-E/A verantwortlich, während der Thread-Pool für schwerere Arbeiten

35
00:01:44,790 --> 00:01:48,200
‫wie Dateizugriff oder Komprimierung oder ähnliches zuständig ist.

36
00:01:48,200 --> 00:01:50,120
‫Aber alles darüber, also

37
00:01:50,120 --> 00:01:52,430
‫über die Ereignisschleife und den Thread-Pool,

38
00:01:52,430 --> 00:01:54,430
‫erfahren Sie in den nächsten Videos.

39
00:01:54,430 --> 00:01:56,080
‫Eine wichtige Sache, die

40
00:01:56,080 --> 00:01:59,010
‫hier zu beachten ist, ist, dass libuv tatsächlich vollständig

41
00:01:59,010 --> 00:02:01,840
‫in C++ und nicht in JavaScript geschrieben ist.

42
00:02:01,840 --> 00:02:06,840
‫Und V8 selbst verwendet neben JavaScript auch C++-Code.

43
00:02:06,950 --> 00:02:10,150
‫Daher ist Node selbst ein in C++

44
00:02:10,150 --> 00:02:14,170
‫und JavaScript geschriebenes Programm und nicht nur in JavaScript,

45
00:02:14,170 --> 00:02:16,530
‫wie Sie vielleicht erwarten, oder?

46
00:02:16,530 --> 00:02:19,660
‫Das Schöne daran ist, dass Node. JS verbindet

47
00:02:19,660 --> 00:02:22,310
‫all diese Bibliotheken, egal ob

48
00:02:22,310 --> 00:02:25,640
‫in C++ oder JavaScript geschrieben, und gibt

49
00:02:25,640 --> 00:02:30,380
‫uns Entwicklern dann Zugriff auf ihre Funktionen in reinem JavaScript.

50
00:02:30,380 --> 00:02:33,090
‫Es bietet uns also wirklich

51
00:02:33,090 --> 00:02:37,290
‫eine sehr schöne Abstraktionsebene, um unser Leben viel einfacher

52
00:02:37,290 --> 00:02:41,200
‫zu machen, anstatt uns mit C++-Code herumschlagen zu müssen.

53
00:02:41,200 --> 00:02:43,970
‫Das wäre eine schreckliche Erfahrung, oder?

54
00:02:43,970 --> 00:02:47,450
‫Auch hier ermöglicht uns diese Architektur, 100 Prozent

55
00:02:47,450 --> 00:02:49,490
‫reinen JavaScript-Code zu schreiben,

56
00:02:49,490 --> 00:02:52,960
‫der in Node. JS und greifen trotzdem

57
00:02:52,960 --> 00:02:55,490
‫auf Funktionen wie das Lesen von Dateien

58
00:02:55,490 --> 00:02:57,650
‫zu, die hinter den Kulissen tatsächlich

59
00:02:57,650 --> 00:03:01,290
‫in libuv oder anderen Bibliotheken in der Sprache C++ implementiert sind.

60
00:03:01,290 --> 00:03:03,090
‫Apropos andere

61
00:03:03,090 --> 00:03:06,750
‫Bibliotheken, Node verlässt sich tatsächlich nicht nur

62
00:03:06,750 --> 00:03:10,920
‫auf V8 und libuv, sondern auch auf http-Parser

63
00:03:10,920 --> 00:03:15,920
‫zum Parsen von http, c-ares oder ähnliches für einige DNS-Anforderungen,

64
00:03:16,420 --> 00:03:21,420
‫OpenSSL für Keepography und auch zlib für die Komprimierung.

65
00:03:21,490 --> 00:03:24,740
‫Und diese sind nicht so wichtig zu verstehen, in Ordnung?

66
00:03:24,740 --> 00:03:27,830
‫Am Ende, wenn all diese Teile gut

67
00:03:27,830 --> 00:03:32,030
‫zusammenpassen, erhalten wir Node. JS bereit für

68
00:03:32,030 --> 00:03:35,000
‫den serverseitigen Einsatz aller vier Anwendungen.

69
00:03:35,000 --> 00:03:37,670
‫Und als nächstes erfahren Sie mehr über Threads

70
00:03:37,670 --> 00:03:39,600
‫in Node und den Thread-Pool.

71
00:03:39,600 --> 00:03:41,663
‫Also bleib dran.

