Serverseitige JavaScript-Plattform Node.js 18.0 verfügbar

Node.js 18.0 wurde veröffentlicht, eine Plattform zum Ausführen von Netzwerkanwendungen in JavaScript. Node.js 18.0 wird als Langzeit-Support-Zweig eingestuft, dieser Status wird jedoch erst im Oktober nach der Stabilisierung zugewiesen. Node.js 18.x wird bis April 2025 unterstützt. Die Wartung des vorherigen LTS-Zweigs von Node.js 16.x dauert bis April 2024 und des vorletzten LTS-Zweigs 14.x bis April 2023. Der 12.x LTS-Zweig wird am 30. April eingestellt und der Node.js 17.x-Staging-Zweig wird am 1. Juni eingestellt.

Wichtigste Verbesserungen:

  • Die V8-Engine wurde auf Version 10.1 aktualisiert, die in Chromium 101 verwendet wird. Im Vergleich zur Version 17.9.0 von Node.js gibt es jetzt Unterstützung für Funktionen wie die Methoden findLast und findLastIndex zum Suchen von Elementen relativ zum Ende von ein Array und die Funktion Intl.supportedValuesOf. Verbesserte Intl.Locale-API. Die Initialisierung von Klassenfeldern und privaten Methoden wurde beschleunigt.
  • Die experimentelle fetch()-API ist standardmäßig aktiviert und dient zum Laden von Ressourcen über das Netzwerk. Die Implementierung basiert auf Code des HTTP/1.1-Undici-Clients und kommt der ähnlichen API, die in Browsern bereitgestellt wird, so nahe wie möglich. Dazu gehört die Unterstützung der FormData-, Headers-, Request- und Response-Schnittstellen zur Bearbeitung von HTTP-Anfrage- und Antwortheadern. const res = waiting fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = waiting res.json(); console.log(data); }
  • Es wurde eine experimentelle Implementierung der Web Streams API hinzugefügt, die Zugriff auf über das Netzwerk empfangene Datenströme ermöglicht. Mit der API ist es möglich, eigene Handler hinzuzufügen, um mit Daten zu arbeiten, sobald Informationen über das Netzwerk eingehen, ohne auf den Download der gesamten Datei warten zu müssen. Zu den Objekten, die jetzt in Node.js verfügbar sind, gehören ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream und DecompressionStream.
  • Die Blob-API wurde auf „stable“ verschoben, sodass Sie unveränderliche Rohdaten zur sicheren Verwendung in verschiedenen Arbeitsthreads kapseln können.
  • Die BroadcastChannel-API wurde stabilisiert, sodass Sie den Austausch von Nachrichten im asynchronen Modus im Format „Ein Absender – viele Empfänger“ organisieren können.
  • Experimentelles Modul node:test zum Erstellen und Ausführen von Tests in JavaScript hinzugefügt, die Ergebnisse im TAP-Format (Test Anything Protocol) zurückgeben.
  • Die Erstellung von sofort einsatzbereiten Builds für Red Hat Enterprise ist nun möglich. Linux (RHEL) 8 und andere Distributionen, die auf Glibc 2.28+ basieren, einschließlich Debian 10 und Ubuntu 20.04, und auch für macOS 10.15+. Aufgrund von Problemen mit dem V8-Engine-Build sind 32-Bit-Builds für Windows.
  • Bereitstellung einer experimentellen Option zum Erstellen einer ausführbaren Node.js-Datei mit vom Benutzer ausgewählten Komponenten, die beim Start initialisiert werden. Um die Startkomponenten zu definieren, wurde die Option „--node-snapshot-main“ zum Build-Konfigurationsskript hinzugefügt, zum Beispiel „./configure –node-snapshot-main=marked.js; Namensknoten"

Die Node.js-Plattform kann sowohl für die serverseitige Unterstützung von Webanwendungen als auch für die Erstellung standardmäßiger client- und serverseitiger Netzwerkprogramme verwendet werden. Um die Funktionalität von Node.js-Anwendungen zu erweitern, wurde eine große Sammlung von Modulen entwickelt, darunter auch solche, die … implementieren. Server und Clients von HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, Module zur Integration mit verschiedenen Web-Frameworks, WebSocket- und Ajax-Handler, Konnektoren zu DBMS (MySQL, PostgreSQL, SQLite, 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 Callback-Handlern basiert. Unterstützte Methoden für das Verbindungs-Multiplexing sind epoll, kqueue, /dev/poll und select. Die libuv-Bibliothek, eine Erweiterung von libev unter Unix-Systemen und IOCP unter IOCP, wird für das Verbindungs-Multiplexing verwendet. WindowsDie libeio-Bibliothek dient der Erstellung eines Thread-Pools, und c-ares ist integriert, um DNS-Abfragen im nicht-blockierenden Modus durchzuführen. Alle blockierenden Systemaufrufe werden innerhalb des Thread-Pools ausgeführt und geben ihre Ergebnisse anschließend, ähnlich wie Signalbehandler, über eine unbenannte Pipe zurück. Die JavaScript-Ausführung erfolgt über Googles V8-Engine (Microsoft entwickelt ebenfalls eine Variante von Node.js mit der Chakra-Core-Engine).

Im Kern ähnelt Node.js den Perl AnyEvent-, Ruby Event Machine-, Python Twisted-Frameworks und der Tcl-Ereignisimplementierung, aber die Ereignisschleife in Node.js bleibt dem Entwickler verborgen und ähnelt der Ereignisbehandlung in einer laufenden Webanwendung im Browser. Beim Schreiben von Anwendungen für node.js müssen Sie beispielsweise die Besonderheiten der ereignisgesteuerten Programmierung berücksichtigen, anstatt „var result = db.query(“select..“);“ auszuführen. Beim 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 Kontrolle sofort an weiteren Code übergeben wird und das Abfrageergebnis verarbeitet wird, sobald Daten eintreffen.

Source: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster