La plateforme JavaScript cÎté serveur Node.js 21.0 est maintenant disponible

La version 21.0 de Node.js a été publiée, une plateforme pour exécuter des applications réseau en JavaScript. Le support de la branche Node.js 21.0 sera assuré pendant 6 mois. Dans les jours à venir, la stabilisation de la branche Node.js 20 sera achevée, qui obtiendra le statut LTS et sera supportée jusqu'en avril 2026. Le support de l'ancienne branche LTS Node.js 18.0 se poursuivra jusqu'en septembre 2025, tandis que celui de la branche LTS précédente 16.0 durera jusqu'en avril 2024.

Améliorations principales :

  • L'API Fetch, destinĂ©e au tĂ©lĂ©chargement de ressources sur le rĂ©seau et facilitant l'Ă©criture de code JavaScript universel adaptĂ© aux travaux cĂŽtĂ© serveur et client, a Ă©tĂ© annoncĂ©e comme stable. L'implĂ©mentation est basĂ©e sur le code du client HTTP/1.1 undici et se rapproche au maximum d'une API similaire fournie dans les navigateurs. L'API comprend la mĂ©thode fetch() et les objets Headers, Request et Response, reprĂ©sentant les en-tĂȘtes HTTP, la requĂȘte et la rĂ©ponse. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Le support de l'API WebStreams a Ă©tĂ© stabilisĂ©, fournissant l'accĂšs Ă  des flux de donnĂ©es reçues via le rĂ©seau. L'API permet d'ajouter des gestionnaires qui traitent les donnĂ©es Ă  mesure qu'elles arrivent via le rĂ©seau, sans attendre le tĂ©lĂ©chargement complet du fichier. Dans Node.js, des objets tels que ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream et DecompressionStream sont disponibles.
  • Une implĂ©mentation expĂ©rimentale du client WebSocket a Ă©tĂ© ajoutĂ©e, compatible avec les navigateurs.. Pour activer le support de WebSocket, un drapeau «—experimental-websocket» a Ă©tĂ© prĂ©vu.
  • Un mode expĂ©rimental par dĂ©faut a Ă©tĂ© ajoutĂ© pour l'utilisation des modules JavaScript ESM (ECMAScript Modules, utilisĂ© dans les modules pour navigateurs) au lieu de CommonJS (spĂ©cifique Ă  Node.js). Ce changement n'affecte pas les modules dont le format est explicitement dĂ©fini par le champ «type» dans package.json, spĂ©cifiĂ© par le drapeau «—input-type» ou Ă©vident en raison de l'extension de fichier (.mjs pour ESM, .cjs pour CommonJS). Ainsi, les modules qui ne sont pas explicitement dĂ©finis comme CommonJS (par exemple, avec l'extension «.js») seront considĂ©rĂ©s comme des modules ESM lorsque le nouveau mode est activĂ©. Un drapeau «—experimental-default-type» a Ă©tĂ© proposĂ© pour activer les nouvelles configurations des modules.
  • Le moteur V8 a Ă©tĂ© mis Ă  jour vers la version 11.8, utilisĂ©e dans Chromium 118, qui a introduit le support de la mĂ©thode ArrayBuffer.prototype.transfer, de la possibilitĂ© de regrouper des tableaux (mĂ©thode groupBy) et des instructions de traitement de constantes WebAssembly (i32.add, i32.sub, i32.mul, i64.add, i64.sub et i64.mul).
  • Le support de globalPreload a Ă©tĂ© interrompu, et il est maintenant recommandĂ© d'utiliser les appels register et initialize pour configurer les modules.
  • La fonction fs.writeFile a Ă©tĂ© enrichie de l'option « flush » pour forcer l'Ă©criture des donnĂ©es sur le disque aprĂšs chaque opĂ©ration d'Ă©criture.
  • Les performances du code liĂ© Ă  l'analyse des URL, Ă  l'API fetch, aux streams, Ă  node:fs et Ă  HTTP ont Ă©tĂ© amĂ©liorĂ©es.
  • Un objet global navigator a Ă©tĂ© ajoutĂ©. Par exemple, pour obtenir des informations sur le nombre de cƓurs CPU, vous pouvez utiliser la propriĂ©tĂ© navigator.hardwareConcurrency.
  • Le paramĂštre « --test » prend dĂ©sormais en charge les masques globaux pour choisir les tests Ă  exĂ©cuter (par exemple, vous pouvez spĂ©cifier « --test **/*.test.js »).
  • Le gestionnaire de paquets npm 10.2.0 et le parseur llhttp 9.1.2 ont Ă©tĂ© mis Ă  jour.
  • Le support de Visual Studio 2019 et des versions de macOS antĂ©rieures Ă  11.0 a Ă©tĂ© interrompu.

La plateforme Node.js peut ĂȘtre utilisĂ©e Ă  la fois pour le soutien serveur des applications Web et pour la crĂ©ation de programmes rĂ©seau clients et serveurs traditionnels. Pour Ă©tendre la fonctionnalitĂ© des applications Node.js, une grande collection de modules a Ă©tĂ© prĂ©parĂ©e, oĂč l'on peut trouver des modules avec implĂ©mentation. serveurs et des clients HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, des modules pour l'intĂ©gration avec divers frameworks web, des gestionnaires WebSocket et Ajax, des connecteurs vers des SGBD (MySQL, PostgreSQL, SQLite, MongoDB), des moteurs de templates, des moteurs CSS, des implĂ©mentations d'algorithmes cryptographiques et des systĂšmes d'authentification (OAuth), des parseurs XML.

Pour traiter un grand nombre de requĂȘtes simultanĂ©es, Node.js utilise un modĂšle d'exĂ©cution de code asynchrone basĂ© sur le traitement d'Ă©vĂ©nements en mode non-bloquant et la dĂ©finition de gestionnaires de rappel (callback). Il prend en charge plusieurs mĂ©thodes de multiplexage de connexions, telles que epoll, kqueue, /dev/poll et select. La bibliothĂšque libuv est utilisĂ©e pour le multiplexage de connexions, qui est une couche au-dessus de libev dans les systĂšmes Unix et de IOCP sous Windows. La crĂ©ation d'un pool de threads est gĂ©rĂ©e par la bibliothĂšque libeio, tandis que c-ares est intĂ©grĂ© pour exĂ©cuter des requĂȘtes DNS en mode non-bloquant. Tous les appels systĂšme bloquants sont exĂ©cutĂ©s dans le pool de threads et, comme les gestionnaires de signaux, transmettent leurs rĂ©sultats via un canal anonyme (pipe). L'exĂ©cution de code JavaScript est assurĂ©e par l'utilisation du moteur V8 dĂ©veloppĂ© par Google (Microsoft dĂ©veloppe Ă©galement une version de Node.js avec le moteur Chakra-Core).

En essence, Node.js ressemble aux frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted et Ă  l'implĂ©mentation des Ă©vĂ©nements en Tcl, mais la boucle d'Ă©vĂ©nements dans Node.js est cachĂ©e par le dĂ©veloppeur et rappelle le traitement des Ă©vĂ©nements dans une application web fonctionnant dans un navigateur. Lors de l'Ă©criture d'applications pour Node.js, il est nĂ©cessaire de prendre en compte les particularitĂ©s de la programmation orientĂ©e Ă©vĂ©nements, par exemple, au lieu d'exĂ©cuter « var result = db.query('select..'); » en attendant la fin du traitement et le traitement des rĂ©sultats, Node.js utilise le principe d'exĂ©cution asynchrone, c'est-Ă -dire que le code est transformĂ© en « db.query('select..', function (result) { traitement du rĂ©sultat }); », permettant un transfert immĂ©diat de contrĂŽle vers le code suivant, tandis que le rĂ©sultat de la requĂȘte sera traitĂ© Ă  mesure que les donnĂ©es arrivent.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster