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

Node.js 18.0 est sorti, une plate-forme permettant d'exécuter des applications réseau en JavaScript. Node.js 18.0 est classé comme branche de support à long terme, mais ce statut ne sera attribué qu'en octobre, après stabilisation. Node.js 18.x sera pris en charge jusqu'en avril 2025. La maintenance de la précédente branche LTS de Node.js 16.x durera jusqu'en avril 2024, et l'année avant la dernière branche LTS 14.x jusqu'en avril 2023. La branche 12.x LTS sera interrompue le 30 avril et la branche intermédiaire Node.js 17.x sera interrompue le 1er juin.

Principales améliorations :

  • Le moteur V8 a été mis à jour vers la version 10.1, qui est utilisée dans Chromium 101. Par rapport à la version 17.9.0 de Node.js, des fonctionnalités telles que les méthodes findLast et findLastIndex sont désormais prises en charge pour rechercher des éléments par rapport à la fin de un tableau et la fonction Intl.supportedValuesOf. API Intl.Locale 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 activée par défaut, conçue pour charger des ressources sur le réseau. L'implémentation est basée sur le code du client unique HTTP/1.1 et est aussi proche que possible de l'API similaire fournie dans les navigateurs. Cela inclut la prise en charge des interfaces FormData, Headers, Request et Response pour manipuler les en-têtes de requête et de réponse HTTP. const res = wait fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = wait res.json(); console.log(données); }
  • Une implémentation expérimentale de l'API Web Streams a été ajoutée, donnant accès aux flux de données reçus sur le réseau. L'API permet d'ajouter vos propres gestionnaires pour travailler avec les données au fur et à mesure que les informations arrivent sur le réseau, sans attendre que l'intégralité du fichier soit téléchargée. Les objets désormais disponibles dans Node.js incluent ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream, CompressionStream et DecompressionStream.
  • L'API Blob a été déplacée vers stable, vous permettant d'encapsuler des données brutes immuables pour une utilisation en toute sécurité dans différents threads de travail.
  • L'API BroadcastChannel a été rendue stable, permettant d'organiser l'échange de messages en mode asynchrone au format « un expéditeur - plusieurs destinataires ».
  • Ajout du module expérimental node:test pour créer et exécuter des tests en JavaScript qui renvoient des résultats au format TAP (Test Anything Protocol).
  • La génération d'assemblys prêts à l'emploi pour Red Hat Enterprise Linux (RHEL) 8 et d'autres distributions basées sur Glibc 2.28+, notamment Debian 10 et Ubuntu 20.04, ainsi que pour macOS 10.15+ est fournie. En raison de problèmes avec la version du moteur V8, la création de versions 32 bits pour Windows a été temporairement arrêtée.
  • Fourni une option expérimentale pour créer un exécutable Node.js avec des composants sélectionnés par l'utilisateur initialisés au démarrage. Pour définir les composants de démarrage, l'option « --node-snapshot-main » a été ajoutée au script de build de configuration, par exemple « ./configure —node-snapshot-main=marked.js ; nom du nœud"

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