La plateforme serveur JavaScript Node.js 19.0 est disponible

La version 19.0 de Node.js, une plateforme pour l'exécution d'applications réseau en JavaScript, est sortie. Node.js 19 appartient à la branche avec un support standard, des mises à jour seront fournies jusqu'en juin 2023. Dans les jours à venir, la stabilisation de la branche Node.js 18 sera finalisée, qui obtiendra le statut LTS et sera supportée jusqu'en avril 2025. Le soutien de l'ancienne branche LTS Node.js 16.0 se poursuivra jusqu'en septembre 2023, et celui de l'avant-derniÚre LTS 14.0 jusqu'en avril 2023.

Améliorations principales :

  • Le moteur V8 a Ă©tĂ© mis Ă  jour vers la version 10.7, utilisĂ©e dans Chromium 107. Parmi les changements par rapport Ă  la branche Node.js 18, on note la mise en Ɠuvre de la troisiĂšme version de l'API Intl.NumberFormat, qui ajoute de nouvelles fonctions formatRange(), formatRangeToParts() et selectRange(), ainsi que le regroupement de ensembles, de nouvelles options de mise Ă  l'Ă©chelle et de dĂ©finition de prĂ©cision, et la possibilitĂ© d'interprĂ©ter des chaĂźnes comme des nombres dĂ©cimaux. Les dĂ©pendances llhttp 8.1.0 et npm 8.19.2 incluses dans le paquet ont Ă©galement Ă©tĂ© mises Ă  jour.
  • Une commande expĂ©rimentale "node —watch" a Ă©tĂ© proposĂ©e, mettant en Ɠuvre un mode de surveillance qui redĂ©marre le processus en cas de modification du fichier importĂ© (par exemple, en exĂ©cutant "node —watch index.js", le processus sera automatiquement redĂ©marrĂ© lors de la modification de index.js).
  • La prise en charge du mĂ©canisme HTTP 1.1 Keep-Alive a Ă©tĂ© activĂ©e pour toutes les connexions HTTP/HTTPS sortantes, laissant la connexion ouverte un certain temps pour traiter plusieurs requĂȘtes HTTP dans un seul lien. Il est prĂ©vu que l'utilisation de Keep-Alive augmentera la bande passante et les performances. Par dĂ©faut, le dĂ©lai d'attente pour maintenir la connexion ouverte est fixĂ© Ă  5 secondes. La mise en Ɠuvre du client HTTP a ajoutĂ© le support de l'analyse des en-tĂȘtes HTTP Keep-Alive dans les rĂ©ponses de serveurs, et dans la mise en Ɠuvre du serveur HTTP de Node.js, la dĂ©connexion automatique des clients inactifs utilisant Keep-Alive a Ă©tĂ© ajoutĂ©e.
  • L'API WebCrypto a Ă©tĂ© promue au statut stable, sauf pour les fonctions utilisant les algorithmes Ed25519, Ed448, X25519 et X448. L'accĂšs au module WebCrypto peut maintenant se faire via globalThis.crypto ou require('node:crypto').webcrypto.
  • La prise en charge des outils de traçage DTrace, SystemTap et ETW (Event Tracing for Windows) a Ă©tĂ© supprimĂ©e, leur maintien Ă©tant jugĂ© peu judicieux en raison de la complexitĂ© de leur prise en charge dans leur Ă©tat actuel sans un plan adĂ©quat.

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