Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Mélange de CommonJS et des Modules ES | Section
Fondamentaux de Node.js

bookMélange de CommonJS et des Modules ES

Glissez pour afficher le menu

Lors du développement de projets Node.js, il est possible de rencontrer à la fois des modules CommonJS et des modules ES dans la même base de code. Node.js utilisait à l'origine CommonJS (require/module.exports), mais prend désormais également en charge les modules ES (import/export). La combinaison de ces deux systèmes peut s'avérer complexe en raison des différences de syntaxe, d'extensions de fichiers et de comportement de chargement. Des problèmes de compatibilité apparaissent car toutes les fonctionnalités ne sont pas disponibles lors de l'importation d'un type de module dans un autre. Il est important de comprendre les stratégies permettant d'utiliser les deux systèmes ensemble, ainsi que les limitations auxquelles vous pourriez être confronté.

Une stratégie courante consiste à choisir un système de modules principal pour votre projet et à utiliser les fonctionnalités de compatibilité uniquement lorsque cela est nécessaire. Par exemple, il est possible de conserver la majorité du code en CommonJS pour assurer la compatibilité avec des outils plus anciens, tout en utilisant les modules ES pour le code plus récent ou lorsque des fonctionnalités comme import.meta.url sont requises. Node.js permet de spécifier le type de module dans le fichier package.json à l'aide du champ "type" : "commonjs" ou "module". Les fichiers avec l'extension .cjs sont toujours traités comme CommonJS, tandis que les fichiers .mjs sont toujours considérés comme des modules ES, indépendamment du champ "type". Cela offre une flexibilité pour mélanger les types de modules au sein d'un projet, mais il est nécessaire de connaître les limitations et les différences dans la manière dont les modules sont chargés et exécutés.

math.cjs

math.cjs

app.mjs

app.mjs

copy

Cet exemple de code illustre comment utiliser un module CommonJS dans un module ES avec Node.js. Le fichier math.cjs utilise la syntaxe CommonJS et exporte une fonction add avec module.exports.add = (a, b) => a + b;. Cette fonction additionne deux nombres et retourne le résultat.

Le fichier app.mjs est un module ES. Les modules ES ne peuvent pas utiliser directement require, il faut donc importer la fonction createRequire du module natif module. En appelant createRequire(import.meta.url), on crée une fonction require utilisable dans le contexte du fichier de module ES courant. Cette fonction require permet ensuite d'importer le module CommonJS (math.cjs).

Lorsque l'on appelle math.add(2, 3), le code affiche 5 dans la console. Cette méthode permet de combiner des modules CommonJS et ES dans un même projet, en tirant parti des avantages de chaque système selon les besoins.

question mark

Quand faut-il privilégier CommonJS plutôt que les modules ES dans un projet Node.js ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 17

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 1. Chapitre 17
some-alt