Veröffentlichung der Server-JavaScript-Plattform Node.js 14.0

Es fand Release Node.js 14.0, Plattformen zur Ausführung von Netzwerk-Anwendungen in JavaScript. Node.js 14.0 gehört zu den Versionen mit langer Unterstützung, aber dieser Status wird erst im Oktober nach Stabilisierung zugewiesen. Die Unterstützung für Node.js 14.0 wird bereitgestellt bis April 2023. Die Unterstützung der vorherigen LTS-Version Node.js 12.0 wird bis April 2022 dauern, während die vorletzte LTS-Version 10.0 bis April 2021 unterstützt wird. Die Unterstützung für die Zwischenversion 13.x endet im Juni dieses Jahres.

Haupt Verbesserungen:

  • Die Möglichkeit zur dynamischen Generierung oder bei bestimmten Ereignissen wurde stabilisiert Diagnoseberichte, in denen Ereignisse dokumentiert sind, die bei der Diagnose von Problemen wie Abstürzen, Leistungsverlust, Speicherlecks, hoher CPU-Auslastung, unerwarteten Fehlermeldungen usw. helfen.
  • Experimentelle Unterstützung für die API Async Local Storage wurde hinzugefügt, mit der Implementierung der Klasse AsyncLocalStorage, die zur Erstellung eines asynchronen Zustands mit Callback- und Promise-basierten Handlern verwendet werden kann. AsyncLocalStorage ermöglicht es, Daten während der Bearbeitung einer Webanfrage zu speichern, ähnlich wie Thread-Local Storage in anderen Sprachen.
  • Die Warnung über die experimentelle Funktionalität beim Laden wurde entfernt. Modulen ECMAScript 6 der durch die import- und export-Ausdrücke bereitgestellten und exportierten Module. Die Implementierung von ESM-Modulen bleibt jedoch experimentell.
  • Die V8-Engine wurde auf die Version 8.1 (1, 2, 3), die neue Leistungsoptimierungen enthält und Innovationen wie den neuen logischen Zusammenführungsoperator „??“ hinzufügt (gibt den rechten Operand zurück, wenn der linke Operand den Wert NULL oder undefined hat, und umgekehrt), den Operator „?.“ für die gleichzeitige Überprüfung der gesamten Eigenschaften- oder Aufrufkette (z.B. „db?.user?.name?.length“ ohne vorherige Prüfungen), die Methode Intl.DisplayName zur Ermittlung lokalisierter Bezeichnungen usw.
  • Es wurde eine Überprüfung der Streams-API durchgeführt, die darauf abzielt, die Konsistenz der Streams-API zu verbessern und Unterschiede im Verhalten der Basiskomponenten von Node.js zu beseitigen. Beispielsweise wurde das Verhalten von http.OutgoingMessage an stream.Writable und net.Socket an stream.Duplex angeglichen. Die Option autoDestroy ist standardmäßig auf „true“ gesetzt, was den Aufruf von „_destroy“ nach Abschluss impliziert.
  • Experimentelle Unterstützung für die API WASI (WebAssembly System Interface), die Programmierschnittstellen für die direkte Interaktion mit dem Betriebssystem bereitstellt (POSIX-API für den Umgang mit Dateien, Sockets usw.).
  • Die Anforderungen an die minimalen Versionen von Compilern und Plattformen wurden erhöht: macOS 10.13 (High Sierra), GCC 6, Windows neuer als 7/2008R2.

Sammlung von Modulen vorbereitet Modulkollektion, in der Module für die Implementierung von HTTP-, SMTP-, XMPP-, DNS-, FTP-, IMAP-, POP3-Servern sowie Module zur Integration mit verschiedenen Web-Frameworks, WebSocket- und Ajax-Handler, Datenbank-Connectoren (MySQL, PostgreSQL, SQLite, MongoDB), Template-Engines, CSS-Engines, Implementierungen von Krypto-Algorithmen und Authentifizierungssystemen (OAuth), XML-Parser zu finden sind.

Um eine Bearbeitung einer großen Anzahl paralleler Anfragen zu gewährleisten, nutzt Node.js ein asynchrones Code-Ausführungsmodell, das auf der nicht-blockierenden Ereignisverarbeitung und der Bestimmung von Callback-Handlern basiert. Zur Multiplexierung der Verbindungen werden Methoden wie epoll, kqueue, /dev/poll und select unterstützt. Für die Multiplexierung wird die Bibliothek libuv, die eine Erweiterung über libev in Unix-Systemen und IOCP in Windows darstellt. Für die Erstellung eines Thread-Pools wird die Bibliothek libeio, für die Ausführung von DNS-Anfragen im nicht-blockierenden Modus ist integriert c-ares. Alle Systemaufrufe, die eine Blockierung hervorrufen, werden innerhalb eines Thread-Pools ausgeführt und geben ihre Ergebnisse, ähnlich wie Signalhandler, über ein anonymes Kanal (Pipe) zurück. Die Ausführung von JavaScript-Code erfolgt über die Nutzung der von Google entwickelten Engine. V8 (Zusätzlich entwickelt Microsoft eine Version von Node.js mit der Chakra-Core-Engine).

Im Grunde genommen ähnelt Node.js den Frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted und Implementierung Tcl-Ereignissen, aber die Ereignisverarbeitungsschleife (Event Loop) in Node.js ist vor dem Entwickler verborgen und ähnelt der Ereignisverarbeitung in einer Webanwendung, die im Browser läuft. Bei der Entwicklung von Anwendungen für Node.js muss man die Besonderheiten der ereignisgesteuerten Programmierung berücksichtigen, zum Beispiel anstelle der Ausführung von «var result = db.query(«select..»);» mit dem Warten auf den Abschluss und die anschließende Verarbeitung der Ergebnisse, verwendet Node.js das Prinzip der asynchronen Ausführung, d.h. der Code wird in «db.query(«select..», function (result) {Resultatverarbeitung});» umgewandelt, wobei die Kontrolle sofort an den nachfolgenden Code übergeben wird und das Ergebnis der Anfrage verarbeitet wird, während die Daten eintreffen.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster