Fermer

décembre 17, 2024

Fonctionnalités Node.js que vous ne connaissiez pas : partie 2

Fonctionnalités Node.js que vous ne connaissiez pas : partie 2


Découvrez quelques-unes des dernières fonctionnalités expérimentales de Node.js : exécutez du code TypeScript directement dans Node.js sans transpilage, prise en charge SQLite intégrée et recherche de fichiers globaux.

Dans mon article précédent, j’ai partagé trois fonctionnalités Node.js vous ne le saviez pas, ce qui ne rend pas justice aux nombreuses API ajoutées au runtime Node.js au cours des trois dernières années. Je ne peux pas tous les aborder dans un seul article, je vais donc me concentrer sur deux autres articles dans cet article et rédiger un article indépendant distinct pour les API qui méritent un article de blog plus long et détaillé.

Allons-y directement.

Exécuter TypeScript de manière native

Mon utilisation préférée du runtime Bun JavaScript est la possibilité d’exécuter du code TypeScript sans avoir besoin de packages ni de configuration supplémentaires. Les développeurs JavaScript se tournent rapidement vers l’écriture de code à l’aide de TypeScript, comme vous pouvez le voir ici. Rapport de tendances GitHub.

Classement des meilleurs langages de programmation GitHub

Au lieu de transpiler le code TypeScript à l’aide d’outils tels que tsc ou esconstruireou en utilisant un exécuteur comme ts-node, vous pouvez désormais exécuter du code TypeScript directement dans Node.js. Node.js a introduit un indicateur expérimental pour cela dans la version 22.6.0. Voici comment l’utiliser :

node --experimental-strip-types index.ts

Le --experimental-strip-types flag indique à Node.js de supprimer les annotations de type du code TypeScript avant de l’exécuter. Node.js n’effectue aucune vérification de type et remplacera les annotations de type en ligne par des espaces. En outre, il exécutera uniquement les fichiers qui ne contiennent pas de fonctionnalités nécessitant une transformation, telles que des énumérations ou des espaces de noms.

Pour permettre la transformation de ces fonctionnalités, utilisez le drapeau --experimental-transform-types.

node --experimental-transform-types index-with-enums.ts

Le --experimental-transform-types le drapeau implique --experimental-strip-types et --enable-source-mapset est disponible dans Node.js à partir de la version 22.7.0.

L’exécution native de TypeScript avec ces indicateurs ne prend pas encore en charge tsconfig.json paramètres tels que les chemins ou la conversion de la syntaxe JavaScript la plus récente vers des normes plus anciennes. Lorsque cette fonctionnalité deviendra stable, elle pourra exécuter parfaitement TypeScript, tout comme vous pouvez le faire avec Deno ou Bun.

Prise en charge de SQLite

Bien que SQLite soit le base de données la plus déployée et utiliséeil est récemment devenu le sujet de conversation de la ville et est en train de devenir rapidement le préféré de nombreux développeurs Web. Je pense que Rails 8 en a fait la base de données par défaut dans le cadre. Je pense que cela a incité l’équipe Node.js à envisager de le prendre en charge nativement. Il existe différents packages pour SQLite, mais son intégration élimine le besoin d’ajouter une autre bibliothèque ou de se soucier de la bibliothèque SQLite à utiliser.

Cette fonctionnalité est encore expérimentale et a été ajoutée à Node.js dans la version 22.5.0. Voici un exemple tiré de la documentation :

import { DatabaseSync } from "node:sqlite";

const database = new DatabaseSync(":memory:");
database.exec(`CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT) STRICT`);

const insert = database.prepare("INSERT INTO data (key, value) VALUES (?,?)");
insert.run(1, "hello");
insert.run(2, "world!");

const query = database.prepare("SELECT * FROM data ORDER BY key");
console.log(query.all());

L’exemple montre l’utilisation de base du node:sqlite module pour ouvrir une base de données en mémoire, écrire des données dans la base de données, puis relire les données. Vous avez besoin du --experimental-sqlite flag lorsque vous exécutez ce code. Cela signifie exécuter le code avec node --experimental-sqlite data.js comprendra le node:sqlite module au runtime, et son omission entraînera l’échec de l’application.

D’ACCORD. Je sais que j’ai dit que je ne vous montrerais que deux fonctionnalités, mais si vous travaillez souvent avec l’API du système de fichiers, vous apprécierez celle-ci. L’API de recherche globale vous permet de rechercher des fichiers à l’aide de modèles, de la même manière que vous pourriez utiliser des caractères génériques dans un shell. Cela peut être extrêmement utile pour des tâches telles que la recherche de tous les fichiers d’un certain type ou de fichiers correspondant à un modèle de dénomination spécifique dans un répertoire.

Node.js 22.0.0 est venu avec le glob et globSync Fonctions API à cet effet. Il vous permet de spécifier un modèle et un ensemble d’options, et renvoie un tableau de chemins de fichiers qui correspondent au modèle.

Voici un exemple :

import { glob } from "fs/promises";

const testFiles = await glob("**/*.test.js");
console.log(testFiles);

Cela renverra le chemin de chaque fichier se terminant par test.js dans le répertoire de travail actuel. Vous pouvez spécifier le répertoire de travail pour exécuter la correspondance de modèles à l’aide de l’option cwd option. Par exemple:

import { glob } from "fs/promises";

const testFiles = await glob("**/*.test.js", {cwd: "/users/"});
console.log(testFiles);

C’est un emballage

Cet article explore trois fonctionnalités récentes de Node.js : l’exécution native de TypeScript, la prise en charge de SQLite et la recherche de fichiers globaux.

Node.js permet désormais d’exécuter du code TypeScript sans outils supplémentaires, en utilisant des indicateurs expérimentaux comme --experimental-strip-types et --experimental-transform-typesbien que le soutien total soit encore en développement. La prise en charge native de SQLite dans Node.js élimine le besoin de bibliothèques externes, permettant des opérations de base de données plus simples avec le node:sqlite module. Enfin, la nouvelle API de recherche globale offre un moyen puissant de rechercher des fichiers à l’aide de modèles, améliorant ainsi les opérations du système de fichiers.

Bien qu’il s’agisse toutes de fonctionnalités expérimentales, elles démontrent l’évolution continue de Node.js, c’est-à-dire qu’elle répond aux besoins de développement modernes tout en maintenant une compatibilité ascendante pour les systèmes existants.

Référence




Source link