Server-side JavaScript-platform Node.js 19.0 beschikbaar

Node.js 19.0 is uitgebracht, een platform voor het uitvoeren van netwerkapplicaties in JavaScript. Node.js 19 is een reguliere ondersteuningstak met updates beschikbaar tot juni 2023. De komende dagen wordt de stabilisatie van de Node.js 18-branch voltooid, die de LTS-status krijgt en wordt ondersteund tot april 2025. Het onderhoud van de vorige LTS-tak van Node.js 16.0 duurt tot september 2023, en het jaar daarvoor de laatste LTS-tak 14.0 tot april 2023.

Belangrijkste verbeteringen:

  • De V8-engine is bijgewerkt naar versie 10.7, gebruikt in Chromium 107. Onder de veranderingen in de engine vergeleken met de Node.js 18-tak wordt de implementatie van de derde versie van de Intl.NumberFormat API opgemerkt, die nieuwe functies toevoegt formatRange (), formatRangeToParts() en selectRange(), groepering van sets, nieuwe opties voor afronding en instelling van precisie, de mogelijkheid om tekenreeksen als decimale getallen te interpreteren. De meegeleverde afhankelijkheden llhttp 8.1.0 en npm 8.19.2 zijn ook bijgewerkt.
  • Er is een experimenteel "node -watch"-commando voorgesteld met de implementatie van een watch-modus die ervoor zorgt dat het proces opnieuw wordt gestart wanneer het geïmporteerde bestand verandert (als bijvoorbeeld "node -watch index.js" wordt uitgevoerd, zal het proces automatisch opnieuw opgestart wanneer index.js verandert).
  • Voor alle uitgaande HTTP/HTTPS-verbindingen is ondersteuning voor het HTTP 1.1 Keep-Alive-mechanisme ingeschakeld, waardoor de verbinding een bepaalde tijd open blijft om meerdere HTTP-verzoeken binnen dezelfde verbinding te verwerken. Van Keep-Alive wordt verwacht dat het de doorvoer en prestaties verbetert. Standaard is de time-out voor het openen van de verbinding ingesteld op 5 seconden. Ondersteuning voor het parseren van de Keep-Alive HTTP-header in serverreacties is toegevoegd aan de HTTP-clientimplementatie, en het automatisch verbreken van de verbinding met inactieve clients die Keep-Alive gebruiken, is toegevoegd aan de Node.js HTTP-serverimplementatie.
  • De WebCrypto API is overgebracht naar de stabiele categorie, met uitzondering van functies die de algoritmen Ed25519, Ed448, X25519 en X448 gebruiken. Om toegang te krijgen tot de WebCrypto-module kunt u nu globalThis.crypto gebruiken of require('node:crypto').webcrypto.
  • Ondersteuning voor de traceringstools DTrace, SystemTap en ETW (Event Tracing for Windows) is verwijderd, waarvan het onderhoud als ongepast werd beschouwd vanwege de complexiteit van het up-to-date houden ervan bij gebrek aan een goed ondersteuningsplan.

Het Node.js-platform kan zowel worden gebruikt voor serveronderhoud van webapplicaties als voor het maken van reguliere client- en servernetwerkprogramma's. Om de functionaliteit van applicaties voor Node.js uit te breiden, is een grote verzameling modules voorbereid, waarin u modules kunt vinden met de implementatie van HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3-servers en -clients, modules voor integratie met verschillende webframeworks, WebSocket- en Ajax-handlers, DBMS-connectoren (MySQL, PostgreSQL, SQLite, MongoDB), templating-engines, CSS-engines, implementaties van crypto-algoritmen en autorisatiesystemen (OAuth), XML-parsers.

Om de verwerking van een groot aantal parallelle verzoeken te garanderen, gebruikt Node.js een asynchrone code-uitvoeringsmodel op basis van niet-blokkerende gebeurtenisafhandeling en de definitie van callback-handlers. Ondersteunde methoden voor multiplexverbindingen zijn epoll, kqueue, /dev/poll en select. Voor verbindingsmultiplexing wordt de libuv-bibliotheek gebruikt, een add-on voor libev op Unix-systemen en IOCP op Windows. De libeio-bibliotheek wordt gebruikt om een ​​threadpool te maken en c-ares is geïntegreerd om DNS-query's in niet-blokkerende modus uit te voeren. Alle systeemaanroepen die blokkering veroorzaken, worden uitgevoerd binnen de threadpool en dragen vervolgens, net als signaalbehandelaars, het resultaat van hun werk terug via een naamloze pijp (pijp). De uitvoering van JavaScript-code wordt verzorgd door het gebruik van de V8-engine die is ontwikkeld door Google (daarnaast ontwikkelt Microsoft een versie van Node.js met de Chakra-Core-engine).

In de kern is Node.js vergelijkbaar met de Perl AnyEvent, Ruby Event Machine, Python Twisted-frameworks en de Tcl-gebeurtenisimplementatie, maar de gebeurtenislus in Node.js is verborgen voor de ontwikkelaar en lijkt op het afhandelen van gebeurtenissen in een webtoepassing die wordt uitgevoerd in browser. Bij het schrijven van applicaties voor node.js moet u bijvoorbeeld rekening houden met de specifieke kenmerken van gebeurtenisgestuurd programmeren in plaats van "var result = db.query("select..");" met wachten op voltooiing van het werk en daaropvolgende verwerking van resultaten, gebruikt Node.js het principe van asynchrone uitvoering, d.w.z. de code wordt getransformeerd in "db.query("select..", function (result) {result processing});", waarin de besturing onmiddellijk wordt doorgegeven aan verdere code, en het queryresultaat wordt verwerkt zodra er gegevens binnenkomen.

Bron: opennet.ru

Voeg een reactie