Version JavaScript Node.js 14.0 côté serveur

A eu lieu libération Noeud.js 14.0, plates-formes pour exécuter des applications réseau en JavaScript. Node.js 14.0 est une branche de support à long terme, mais ce statut ne sera attribué qu'en octobre, après stabilisation. Node.js 14.0 sera pris en charge être réalisé jusqu'en avril 2023. La maintenance de la précédente branche LTS de Node.js 12.0 durera jusqu'en avril 2022, et l'année avant la dernière branche LTS 10.0 jusqu'en avril 2021. La prise en charge de la branche intermédiaire 13.x prendra fin en juin de cette année.

principal améliorations:

  • La capacité de génération à la volée ou lors de la survenance de certains événements a été stabilisée rapports de diagnostic, qui affiche les événements permettant de diagnostiquer des problèmes tels que des plantages, une dégradation des performances, des fuites de mémoire, une charge CPU importante, une sortie d'erreur inattendue, etc.
  • Ajout du support API expérimental Stockage local asynchrone avec l'implémentation de la classe AsyncLocalStorage, qui peut être utilisée pour créer un état asynchrone avec des gestionnaires basés sur des appels de rappel et des promesses. AsyncLocalStorage vous permet de stocker des données pendant le traitement d'une requête Web, ce qui rappelle le stockage local des threads dans d'autres langages.
  • Suppression du message d'avertissement concernant la fonctionnalité expérimentale lors du chargement modules ECMAScript 6 connectés et exportés à l’aide des instructions d’importation et d’exportation. Dans le même temps, la mise en œuvre des modules ESM elle-même reste expérimentale.
  • Moteur V8 mis à jour vers la version 8.1 (1, 2, 3), qui inclut de nouvelles optimisations de performances et fonctionnalités telles que le nouvel opérateur de concaténation logique "??" (renvoie l'opérande de droite si l'opérande de gauche est NULL ou indéfini, et vice versa), l'opérateur "?." pour une vérification unique de toute la chaîne de propriétés ou d'appels (par exemple, « db?.user?.name?.length » sans vérifications préalables), la méthode Intl.DisplayName pour obtenir des noms localisés, etc.
  • Une révision de l'API Streams a été réalisée, visant à améliorer la cohérence des API Streams et à éliminer les différences de comportement des parties de base de Node.js. Par exemple, le comportement de http.OutgoingMessage est proche de stream.Writable et net.Socket est similaire à stream.Duplex. L'option autoDestroy est définie sur "true" par défaut, ce qui signifie appeler "_destroy" une fois l'opération terminée.
  • Ajout du support API expérimental ÉTAIS-JE (Interface système WebAssembly), fournissant des interfaces logicielles pour une interaction directe avec le système d'exploitation (API POSIX pour travailler avec des fichiers, des sockets, etc.).
  • Des exigences accrues pour versions minimales compilateurs et plateformes : macOS 10.13 (High Sierra), GCC 6, Windows plus récent 7/2008R2.

Rappelons que la plateforme Node.js peut être utilisée à la fois pour le support côté serveur d'applications Web et pour la création de programmes réseau client et serveur ordinaires. Pour étendre les fonctionnalités des applications pour Node.js, un grand nombre de collection de modules, dans lequel vous pouvez trouver des modules avec l'implémentation de serveurs et clients HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, des modules d'intégration avec divers frameworks web, des gestionnaires WebSocket et Ajax, des connecteurs aux SGBD (MySQL, PostgreSQL, SQLite , MongoDB ), moteurs de modèles, moteurs CSS, implémentations d'algorithmes cryptographiques et de systèmes d'autorisation (OAuth), analyseurs XML.

Pour gérer un grand nombre de requêtes parallèles, Node.js utilise un modèle d'exécution de code asynchrone basé sur le traitement des événements non bloquants et la définition de gestionnaires de rappel. Les méthodes prises en charge pour le multiplexage des connexions incluent epoll, kqueue, /dev/poll et select. La bibliothèque est utilisée pour multiplexer les connexions libuv, qui est une superstructure sur Libev sur les systèmes Unix et via IOCP sous Windows. Une bibliothèque est utilisée pour créer un pool de threads libérez, pour effectuer des requêtes DNS en mode non bloquant est intégré c-are. Tous les appels système provoquant un blocage sont exécutés dans le pool de threads puis, comme les gestionnaires de signaux, renvoient le résultat de leur travail via un canal sans nom. L'exécution du code JavaScript est assurée grâce à l'utilisation d'un moteur développé par Google V8 (De plus, Microsoft développe une version de Node.js avec le moteur Chakra-Core).

À la base, Node.js est similaire aux frameworks Perl AnyEvent, Machine d'événements Ruby, Python tordu и mise en œuvre événements dans Tcl, mais la boucle d'événements dans Node.js est cachée au développeur et ressemble à la gestion des événements dans une application Web exécutée dans un navigateur. Lors de l'écriture d'applications pour node.js, il est nécessaire de prendre en compte les spécificités de la programmation événementielle, par exemple, au lieu de faire "var result = db.query("select..");" avec l'attente de la fin des travaux et le 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) {resulttreatment}); », dans lequel le contrôle passera immédiatement à du code supplémentaire 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