La plateforme JavaScript serveur Node.js 18.0 est disponible

La version 18.0 de Node.js a été publiée, une plateforme pour exécuter des applications réseau en JavaScript. Node.js 18.0 est classé parmi les versions avec un long support, mais ce statut ne sera attribué qu'en octobre, aprÚs une période de stabilisation. Le support pour Node.js 18.x sera assuré jusqu'en avril 2025. Le support de la précédente version LTS, Node.js 16.x, se poursuivra jusqu'en avril 2024, et celui de la version LTS antérieure 14.x jusqu'en avril 2023. Le support de la version LTS 12.x prendra fin le 30 avril, tandis que le support de la version intermédiaire Node.js 17.x cessera le 1er juin.

Améliorations principales :

  • Le moteur V8 a Ă©tĂ© mis Ă  jour vers la version 10.1, utilisĂ©e dans Chromium 101. Par rapport Ă  la version Node.js 17.9.0, de nouvelles fonctionnalitĂ©s ont Ă©tĂ© ajoutĂ©es, comme les mĂ©thodes findLast et findLastIndex pour rechercher des Ă©lĂ©ments Ă  partir de la fin d'un tableau, ainsi que la fonction Intl.supportedValuesOf. L'API Intl.Locale a Ă©tĂ© amĂ©liorĂ©e. L'initialisation des champs de classe et des mĂ©thodes privĂ©es a Ă©tĂ© accĂ©lĂ©rĂ©e.
  • L’API expĂ©rimentale fetch() est dĂ©sormais activĂ©e par dĂ©faut, conçue pour charger des ressources depuis le rĂ©seau. Sa mise en Ɠuvre est basĂ©e sur le code du client HTTP/1.1 undici et est trĂšs proche de l'API Ă©quivalente fournie dans les navigateurs. Elle prend en charge les interfaces FormData, Headers, Request et Response pour manipuler les en-tĂȘtes HTTP des requĂȘtes et des rĂ©ponses. const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
  • Une mise en Ɠuvre expĂ©rimentale de l'API Web Streams a Ă©tĂ© ajoutĂ©e, qui permet d'accĂ©der aux flux de donnĂ©es reçus par le rĂ©seau. Cette API permet d’ajouter ses propres gestionnaires pour traiter les donnĂ©es Ă  mesure qu’elles arrivent, sans avoir Ă  attendre le chargement complet du fichier. Dans Node.js, des objets tels que ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream et DecompressionStream sont dĂ©sormais disponibles.
  • L'API Blob, qui permet d'encapsuler des donnĂ©es brutes immuables pour une utilisation sĂ©curisĂ©e dans diffĂ©rents threads, est devenue stable.
  • L'API BroadcastChannel, qui permet d'organiser un Ă©change de messages en mode asynchrone selon le modĂšle « un expĂ©diteur — plusieurs rĂ©cepteurs », est maintenant stable.
  • Le module expĂ©rimental node:test a Ă©tĂ© ajoutĂ© pour crĂ©er et exĂ©cuter des tests en JavaScript, retournant les rĂ©sultats au format TAP (Test Anything Protocol).
  • Des ensembles prĂȘts pour Red Hat Enterprise Linux (RHEL) 8 et d'autres distributions basĂ©es sur Glibc 2.28+, y compris Debian 10 et Ubuntu 20.04, ainsi que pour macOS 10.15+, ont Ă©tĂ© fournis. En raison de problĂšmes de construction du moteur V8, la crĂ©ation d'assemblages 32 bits pour Windows a Ă©tĂ© temporairement suspendue.
  • Une fonctionnalitĂ© expĂ©rimentale permettant de compiler un fichier exĂ©cutable Node.js avec les composants choisis par l'utilisateur, initialisĂ©s au dĂ©marrage, a Ă©tĂ© introduite. Pour dĂ©finir les composants de dĂ©marrage, l'option « --node-snapshot-main » a Ă©tĂ© ajoutĂ©e au script de configuration, par exemple, « ./configure --node-snapshot-main=marked.js; name node »

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