Serverseitige JavaScript-Version Node.js 14.0

fand statt freigeben Node.js 14.0,Plattformen zum Ausführen von Netzwerkanwendungen in JavaScript. Node.js 14.0 ist ein langfristiger Support-Zweig, dieser Status wird jedoch erst im Oktober nach der Stabilisierung vergeben. Node.js 14.0 wird unterstützt durchgeführt werden bis April 2023. Die Wartung des vorherigen LTS-Zweigs von Node.js 12.0 dauert bis April 2022 und des vorletzten LTS-Zweigs 10.0 bis April 2021. Die Unterstützung für den 13.x-Staging-Zweig endet im Juni dieses Jahres.

Haupt- Verbesserungen:

  • Die Fähigkeit zur spontanen Generierung oder beim Eintreten bestimmter Ereignisse wurde stabilisiert Diagnoseberichte, die Ereignisse anzeigen, die bei der Diagnose von Problemen wie Abstürzen, Leistungseinbußen, Speicherlecks, hoher CPU-Auslastung, unerwarteter Fehlerausgabe usw. helfen.
  • Experimentelle API-Unterstützung hinzugefügt Asynchroner lokaler Speicher mit der Implementierung der AsyncLocalStorage-Klasse, die zum Erstellen eines asynchronen Status mit Handlern basierend auf Rückrufaufrufen und Versprechen verwendet werden kann. Mit AsyncLocalStorage können Sie Daten speichern, während eine Webanforderung verarbeitet wird, was an die Thread-lokale Speicherung in anderen Sprachen erinnert.
  • Warnmeldung zur experimentellen Funktion beim Laden entfernt Module ECMAScript 6 über Import- und Exportanweisungen verbunden und exportiert werden. Gleichzeitig bleibt die Implementierung von ESM-Modulen selbst experimentell.
  • V8-Motor auf Version aktualisiert 8.1 (1, 2, 3), das neue Leistungsoptimierungen und Funktionen wie den neuen logischen Verkettungsoperator „??“ enthält. (gibt den rechten Operanden zurück, wenn der linke Operand NULL oder undefiniert ist und umgekehrt), der „?.“-Operator für eine einmalige Überprüfung der gesamten Kette von Eigenschaften oder Aufrufen (z. B. „db?.user?.name?.length“ ohne Vorprüfungen), die Methode Intl.DisplayName zum Erhalten lokalisierter Namen usw.
  • Es wurde eine Überarbeitung der Streams-API durchgeführt, um die Konsistenz der Streams-APIs zu verbessern und Unterschiede im Verhalten der grundlegenden Teile von Node.js zu beseitigen. Beispielsweise ähnelt das Verhalten von http.OutgoingMessage dem von stream.Writable und von net.Socket dem von stream.Duplex. Die Option autoDestroy ist standardmäßig auf „true“ gesetzt, was bedeutet, dass nach Abschluss „_destroy“ aufgerufen wird.
  • Experimentelle API-Unterstützung hinzugefügt WAR ICH (WebAssembly-Systemschnittstelle), Bereitstellung von Softwareschnittstellen für die direkte Interaktion mit dem Betriebssystem (POSIX-API für die Arbeit mit Dateien, Sockets usw.).
  • Erhöhte Anforderungen an Minimalversionen Compiler und Plattformen: macOS 10.13 (High Sierra), GCC 6, Windows neuer 7/2008R2.

Erinnern wir uns daran, dass die Node.js-Plattform sowohl für die serverseitige Unterstützung von Webanwendungen als auch für die Erstellung gewöhnlicher Client- und Server-Netzwerkprogramme verwendet werden kann. Um die Funktionalität von Anwendungen für Node.js zu erweitern, ist eine große Anzahl von Sammlung von Modulen, in dem Sie Module mit der Implementierung von Servern und Clients HTTP, SMTP, , MongoDB), Template-Engines, CSS-Engines, Implementierungen kryptografischer Algorithmen und Autorisierungssysteme (OAuth), XML-Parser.

Um eine große Anzahl paralleler Anfragen zu verarbeiten, verwendet Node.js ein asynchrones Codeausführungsmodell, das auf nicht blockierender Ereignisverarbeitung und der Definition von Callback-Handlern basiert. Zu den unterstützten Methoden zum Multiplexen von Verbindungen gehören epoll, kqueue, /dev/poll und select. Die Bibliothek wird zum Multiplexen von Verbindungen verwendet libuv, das ist ein Überbau darüber libev auf Unix-Systemen und über IOCP unter Windows. Eine Bibliothek wird zum Erstellen eines Thread-Pools verwendet libeio, zur Durchführung von DNS-Abfragen im nicht blockierenden Modus, ist integriert c-ares. Alle Systemaufrufe, die eine Blockierung verursachen, werden innerhalb des Thread-Pools ausgeführt und geben dann wie Signalhandler das Ergebnis ihrer Arbeit über eine unbenannte Pipe zurück. Die Ausführung von JavaScript-Code wird durch den Einsatz einer von Google entwickelten Engine sichergestellt V8 (Darüber hinaus entwickelt Microsoft eine Version von Node.js mit der Chakra-Core-Engine).

Im Kern ähnelt Node.js Frameworks Perl AnyEvent, Ruby-Ereignismaschine, Python verdreht и Implementierung Ereignisse in Tcl, aber die Ereignisschleife in Node.js ist für den Entwickler verborgen und ähnelt der Ereignisbehandlung in einer Webanwendung, die in einem Browser ausgeführt wird. Beim Schreiben von Anwendungen für node.js müssen die Besonderheiten der ereignisgesteuerten Programmierung berücksichtigt werden, anstatt beispielsweise „var result = db.query(“select..“);“ auszuführen. Mit dem Warten auf den Abschluss der Arbeit und der anschließenden Verarbeitung der Ergebnisse verwendet Node.js das Prinzip der asynchronen Ausführung, d. h. Der Code wird in „db.query(„select..“, function (result) {result processing});“ umgewandelt, wobei die Steuerung sofort an weiteren Code übergeben wird und das Abfrageergebnis verarbeitet wird, sobald Daten eintreffen. .

Source: opennet.ru

Kommentar hinzufügen