En avril 2022, la version NodeJS Node v18 a été publiée. La mise à jour Node v18 est l'une des mises à jour les plus attendues depuis Node v14, qui a ajouté une API de stockage local asynchrone, une interface Web Assembly System (WASI) et la prise en charge des modules ECMAScript.

La mise à niveau v18 ajoute diverses améliorations à NodeJS, notamment une API de récupération activée globalement par défaut, la prise en charge de l'API de flux Web et un module d'exécution de test principal. Nous couvrons ici la plupart des modifications importantes apportées à NodeJS dans la v18.

1. L'API de récupération

L'API de récupération fournit une interface pour accéder et manipuler les requêtes et les réponses HTTP. Avant NodeJS v18, les requêtes HTTP effectuées avec NodeJS nécessitaient des bibliothèques tierces telles que axios et extraction de nœud ou le compliqué http ou https forfait.

NodeJS v18 rend l'API de récupération disponible dans la portée globale par défaut. L'API de récupération globale élimine le besoin de bibliothèques tierces telles que

axios et le code verbeux associé au https package lors de la récupération des ressources de manière asynchrone sur un réseau.

Voici un exemple d'utilisation de l'API :

constante getData = asynchronefonction () {
essayer {
constante res = attendre chercher("https://example.com/users");
constante données = attendre res.json();
console.log (données);
} attraper (Erreur) {
console.Journal(`Quelque chose s'est mal passé, ${erreur}`);
}
};
getData();

La getData fonction ci-dessus envoie un OBTENIR demande de récupérer les ressources de " https://example.com/users". L'API de récupération prend également un deuxième paramètre facultatif, un objet d'options. Les objets d'options doivent contenir des détails sur la demande. Par exemple:

constante donnéesutilisateur = {
Nom: "Jon Snow",
âge: 25 ans,
le genre: "M",
};
constante postData = asynchronefonction (Les données) {
essayer {
constante res = attendre chercher("https://exemple.com/utilisateurs", {
méthode: "PUBLIER",
corps: JSON.stringify (données),
});
constante réponseDonnées = attendre res.json();
console.Journal(
`La demande a été acceptée, voici les détails: ${responseData}`
);
} attraper (Erreur) {
console.Journal(`La demande n'a pas abouti, voici les détails: ${erreur}`);
}
};
postData (userData);

Bien que l'API de récupération soit toujours expérimental, cela devrait bien fonctionner pour la plupart des utilisateurs.

2. Prise en charge de l'API de flux Web

Pensez aux applications multimédias ou en temps réel; il s'agit d'un cas d'utilisation principal de l'API Web-Streams. L'API de flux Web est un ensemble d'interfaces qui permettent la décomposition par programme d'une grande ressource reçue sur un réseau en petits morceaux, puis la traite petit à petit.

Un exemple de flux est le corps de la réponse renvoyé par un aller chercher demande. Le corps de la réponse est du type Flux lisible.

NodeJS v18 expose un expérimental implémentation de l'API de flux Web. Avec cette mise à jour, les API de flux Web sont désormais disponibles à la fois sur le client et sur le serveur, ce qui simplifie le développement.

Vous pouvez trouver une liste des flux actuellement pris en charge dans le notes de version officielles.

3. Le module Test Runner

Dans les versions antérieures de NodeJS, les tests sans bibliothèques tierces étaient effectués avec la fonction intégrée affirmer bibliothèque.

La affirmer facilitait l'écriture de tests simples, mais elle présentait des limitations importantes qui rendaient difficile le travail avec plusieurs suites de tests. Ces limitations ont favorisé le besoin de bibliothèques tierces comme Jest pour exécuter des tests plus avancés.

NodeJS v18 élimine le besoin de bibliothèques tierces avec l'introduction du propre module de testeur principal de NodeJS. Le testeur prend en charge des fonctionnalités telles que les sous-tests, le saut de test, les tests de rappel, etc., un peu comme Jest.

Pour utiliser le lanceur de test, vous devez importer affirmer de affirmer et test de noeud: tester. Remarquez le "nœud:" préfixe; c'est le nouveau protocole de Node qui distingue les packages de base de nœud des packages créés par l'utilisateur.

constanteaffirmer = exiger("affirmer");
constante essai = exiger("nœud: test" );

Voici un exemple de test simple utilisant le module test runner :

test("Vérifiez si les chaînes sont identiques", (t) => {
assert.strictEqual("test", "test");
});

Les résultats du test affichés par le testeur seront en TAP (protocole Test Anything) format. Notez que cette fonctionnalité est encore expérimentale et peut changer à tout moment.

4. Autres mises à niveau et correctifs

La mise à jour Node v18 comprend également une mise à jour du moteur v8 vers la version 10.1. Le moteur v8 est le runtime JavaScript utilisé par NodeJS pour exécuter JavaScript.

La mise à jour v8 rend le méthodes de tableautrouverDernier et findLastIndex disponible dans NodeJS et améliore les performances des champs de classe et des méthodes de classe privées.

NodeJS expose également les API suivantes sur le périmètre global dans la mise à niveau Node v18 :

  • Goutte
  • BrodcastChannel

Mise à niveau vers Node v18

À l'aide de Node v18, vous pouvez tester une application entière sans bibliothèques externes, récupérer des ressources de manière asynchrone sans bibliothèques externes et activer les flux Web sur votre serveur.

Cependant, il convient de noter que ces fonctionnalités sont encore expérimentales et peuvent changer à tout moment. Vous pouvez mettre à niveau vers NodeJS v18 en utilisant le lien de téléchargement officiel.