Menu
CoddyTech

Modules CommonJS

Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 10 sur 33.

Une grande partie du code Node que vous lirez dans les paquets npm et les anciens tutoriels utilise un autre système de modules.

CommonJS exporte avec module.exports et importe avec require. Un fichier dont l’extension est .cjs est toujours un fichier CommonJS, quels que soient les autres choix du projet, et un import d’un tel fichier vous donne son objet module.exports par défaut :

// greet.cjs
function hello(name) {
    return 'Hello, ' + name;
}
module.exports = { hello };

// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));

exports désigne au départ le même objet que module.exports. exports.hello = hello y ajoute une propriété ; exports = { hello } remplace la variable, et le module importateur reçoit un objet vide.

challenge icon

Défi

Facile

Un ancien fichier, legacy/stats.cjs, est écrit à la manière de CommonJS, avec module.exports. Utilise-le depuis ton fichier notes.js pour ajouter une commande stats.

  1. Dans legacy/stats.cjs, termine countWords(notes). Cette fonction reçoit le tableau de notes et renvoie le nombre total de mots qu’elles contiennent, comptés sur l’ensemble des notes. Les mots sont séparés par des espaces. Pour les trois notes initiales, Buy milk, Call Ada et Water the plants, elle renvoie 7. Pour un tableau vide, elle renvoie 0.
  2. Dans notes.js, importe le fichier avec import stats from './legacy/stats.cjs'. C’est un fichier CommonJS, donc stats est son objet module.exports, et la fonction est stats.countWords.
  3. Ajoute une commande stats à la chaîne de conditions, avant le else final. Elle affiche une ligne : le nombre de notes, puis le nombre de mots.
    3 notes, 7 words
    where et les autres commandes continuent de fonctionner.

Essaie : saisis stats dans la zone après $ node notes.js, puis appuie sur Entrée. Tu vois 3 notes, 7 words. Saisis ensuite add Buy bread, puis stats à nouveau : tu vois toujours 3 notes, 7 words, car le stockage oublie les nouvelles notes quand le programme se termine.

Essayez vous-même

// Un ancien module, écrit à la manière de CommonJS.
function countWords(notes) {
    // Renvoie le nombre total de mots contenus dans toutes les notes.
    return 0;
}

module.exports = { countWords };

Toutes les leçons de Les bases de Node.js

Entraînez-vous par vous-même : Playground Express