‫Dozent: Um die
‫Bühne für die nächsten Vorlesungen
‫zu bereiten, lernen wir zunächst etwas über die Node-Architektur.
‫Lassen Sie uns diese Architektur hier in
‫Bezug auf die Abhängigkeiten von Node darstellen,
‫die nur ein paar
‫Bibliotheken sind, von denen Node abhängt, um richtig zu funktionieren.
‫Die Node-Laufzeit hat also mehrere Abhängigkeiten,
‫und die
‫wichtigsten sind die V8-Engine (murmelt) und libuv.
‫Nun haben wir vorher gesagt, dass Node eine JavaScript-Laufzeit ist, die
‫auf der V8-Engine von Google basiert, oder?
‫Deshalb erscheint es hier als Abhängigkeit.
‫Ohne V8 hätte Node absolut keine Möglichkeit, den
‫von uns geschriebenen JavaScript-Code zu verstehen.
‫Daher ist V8 ein grundlegender
‫Bestandteil der Node-Architektur.
‫Auch hier ist die V8-Engine das, was JavaScript-Code in Maschinencode
‫umwandelt, den ein Computer tatsächlich verstehen kann.
‫Okay, aber das allein reicht nicht aus, um ein komplettes
‫serverseitiges Framework wie Node.
‫Deshalb haben wir auch libuv in Node.
‫Und libuv ist eine Open-Source-Bibliothek mit einem
‫starken Fokus auf asynchrone IO.
‫Also Input-Output.
‫Diese Schicht gibt Node Zugriff
‫auf das zugrunde liegende
‫Computerbetriebssystem, das Dateisystem, das Netzwerk und mehr.
‫Darüber hinaus implementiert libuv auch zwei äußerst wichtige Funktionen
‫von Node. JS, die
‫die Ereignisschleife und auch der Thread-Pool sind.
‫Und in einfachen Worten ist die Ereignisschleife
‫für die Abwicklung einfacher Aufgaben wie das Ausführen
‫von Rückrufen und Netzwerk-E/A verantwortlich, während der Thread-Pool für schwerere Arbeiten
‫wie Dateizugriff oder Komprimierung oder ähnliches zuständig ist.
‫Aber alles darüber, also
‫über die Ereignisschleife und den Thread-Pool,
‫erfahren Sie in den nächsten Videos.
‫Eine wichtige Sache, die
‫hier zu beachten ist, ist, dass libuv tatsächlich vollständig
‫in C++ und nicht in JavaScript geschrieben ist.
‫Und V8 selbst verwendet neben JavaScript auch C++-Code.
‫Daher ist Node selbst ein in C++
‫und JavaScript geschriebenes Programm und nicht nur in JavaScript,
‫wie Sie vielleicht erwarten, oder?
‫Das Schöne daran ist, dass Node. JS verbindet
‫all diese Bibliotheken, egal ob
‫in C++ oder JavaScript geschrieben, und gibt
‫uns Entwicklern dann Zugriff auf ihre Funktionen in reinem JavaScript.
‫Es bietet uns also wirklich
‫eine sehr schöne Abstraktionsebene, um unser Leben viel einfacher
‫zu machen, anstatt uns mit C++-Code herumschlagen zu müssen.
‫Das wäre eine schreckliche Erfahrung, oder?
‫Auch hier ermöglicht uns diese Architektur, 100 Prozent
‫reinen JavaScript-Code zu schreiben,
‫der in Node. JS und greifen trotzdem
‫auf Funktionen wie das Lesen von Dateien
‫zu, die hinter den Kulissen tatsächlich
‫in libuv oder anderen Bibliotheken in der Sprache C++ implementiert sind.
‫Apropos andere
‫Bibliotheken, Node verlässt sich tatsächlich nicht nur
‫auf V8 und libuv, sondern auch auf http-Parser
‫zum Parsen von http, c-ares oder ähnliches für einige DNS-Anforderungen,
‫OpenSSL für Keepography und auch zlib für die Komprimierung.
‫Und diese sind nicht so wichtig zu verstehen, in Ordnung?
‫Am Ende, wenn all diese Teile gut
‫zusammenpassen, erhalten wir Node. JS bereit für
‫den serverseitigen Einsatz aller vier Anwendungen.
‫Und als nächstes erfahren Sie mehr über Threads
‫in Node und den Thread-Pool.
‫Also bleib dran.