Plateforme JavaScript côté serveur Node.js 19.0 disponible

Node.js 19.0, une plate-forme permettant d'exécuter des applications réseau en JavaScript, a été publiée. Node.js 19 est une branche de support régulière avec des mises à jour disponibles jusqu'en juin 2023. Dans les prochains jours, la stabilisation de la branche Node.js 18 sera achevée, qui recevra le statut LTS et sera supportée jusqu'en avril 2025. La maintenance de la précédente branche LTS de Node.js 16.0 durera jusqu'en septembre 2023, et l'année avant la dernière branche LTS 14.0 jusqu'en avril 2023.

Principales améliorations :

  • Le moteur V8 a été mis à jour vers la version 10.7, utilisée dans Chromium 107. Parmi les changements du moteur par rapport à la branche Node.js 18, on note l'implémentation de la troisième version de l'API Intl.NumberFormat, qui ajoute de nouvelles fonctions formatRange (), formatRangeToParts() et selectRange(), regroupement d'ensembles, nouvelles options d'arrondi et de précision de réglage, possibilité d'interpréter les chaînes comme des nombres décimaux. Les dépendances incluses llhttp 8.1.0 et npm 8.19.2 ont également été mises à jour.
  • Une commande expérimentale "node -watch" a été proposée avec la mise en place d'un mode veille qui garantit que le processus est redémarré lorsque le fichier importé change (par exemple, si "node -watch index.js" est exécuté, le processus sera automatiquement redémarré lorsque index.js change).
  • Pour toutes les connexions HTTP/HTTPS sortantes, la prise en charge du mécanisme HTTP 1.1 Keep-Alive est activée, ce qui laisse la connexion ouverte pendant un certain temps pour traiter plusieurs requêtes HTTP au sein de la même connexion. Keep-Alive devrait améliorer le débit et les performances. Par défaut, le délai d'ouverture de la connexion est fixé à 5 secondes. La prise en charge de l'analyse de l'en-tête HTTP Keep-Alive dans les réponses du serveur a été ajoutée à l'implémentation du client HTTP, et la déconnexion automatique des clients inactifs à l'aide de Keep-Alive a été ajoutée à l'implémentation du serveur HTTP Node.js.
  • L'API WebCrypto a été transférée dans la catégorie stable, à l'exception des fonctions utilisant les algorithmes Ed25519, Ed448, X25519 et X448. Pour accéder au module WebCrypto, vous pouvez désormais utiliser globalThis.crypto ou require('node:crypto').webcrypto.
  • Le support des outils de traçage DTrace, SystemTap et ETW (Event Tracing for Windows) a été supprimé, dont la maintenance était considérée comme inappropriée en raison de la complexité de sa mise à jour en l'absence d'un plan de support approprié.

La plate-forme Node.js peut être utilisée à la fois pour la maintenance du serveur d'applications Web et pour la création de programmes réseau client et serveur réguliers. Pour étendre les fonctionnalités des applications pour Node.js, une grande collection de modules a été préparée, dans laquelle vous pouvez trouver des modules avec la mise en œuvre de HTTP, SMTP, XMPP, DNS, FTP, IMAP, serveurs et clients POP3, modules d'intégration avec divers frameworks web, des gestionnaires WebSocket et Ajax, des connecteurs SGBD (MySQL, PostgreSQL, SQLite, MongoDB), des moteurs de templates, des moteurs CSS, des implémentations d'algorithmes de chiffrement et de systèmes d'autorisation (OAuth), des parseurs XML.

Pour assurer le traitement d'un grand nombre de requêtes parallèles, Node.js utilise un modèle d'exécution de code asynchrone basé sur la gestion d'événements non bloquants et la définition de gestionnaires de rappel. Les méthodes prises en charge pour les connexions multiplexées sont epoll, kqueue, /dev/poll et select. Pour le multiplexage des connexions, la bibliothèque libuv est utilisée, qui est un module complémentaire pour libev sur les systèmes Unix et IOCP sur Windows. La bibliothèque libeio est utilisée pour créer un pool de threads, et c-ares est intégré pour effectuer des requêtes DNS en mode non bloquant. Tous les appels système qui provoquent un blocage sont exécutés à l'intérieur du pool de threads, puis, comme les gestionnaires de signaux, transfèrent le résultat de leur travail via un canal sans nom (pipe). L'exécution du code JavaScript est assurée grâce à l'utilisation du moteur V8 développé par Google (par ailleurs, Microsoft développe une version de Node.js avec le moteur Chakra-Core).

À la base, Node.js est similaire aux frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted et à l'implémentation d'événements Tcl, mais la boucle d'événements dans Node.js est masquée pour le développeur et ressemble à la gestion des événements dans une application Web en cours d'exécution. dans le navigateur. Lors de l'écriture d'applications pour node.js, vous devez tenir compte des spécificités de la programmation événementielle, par exemple, au lieu de faire "var result = db.query("select..");" avec attente de l'achèvement des travaux et traitement ultérieur des résultats, Node.js utilise le principe de l'exécution asynchrone, c'est-à-dire le code est transformé en "db.query("select..", function (result) {result processing});", dans lequel le contrôle passera instantanément à un autre code, et le résultat de la requête sera traité au fur et à mesure que les données arrivent.

Source: opennet.ru

Ajouter un commentaire