Interactions entre modules avec Node.js – Mots clés exports et require

Pour comprendre l'interaction entre modules avec Node.js, il nous faut au préalable comprendre les mots clés exports et require qui permettent respectivement à un module d'exporter des mécanismes vers d'autres modules et d'utiliser des mécanismes exportés par d'autres modules.

Le mot-clé exports

Le mot-clé exports a pour rôle d'exposer des fonctions à titre de méthodes d'un module. Par exemple, imaginez le code suivant :

  secret.js affichage.js

Le module secret.js définit des constantes quoi et qui correspondant à des λ ne prenant pas de paramètre et retournant des informations importantes. J'ai utilisé deux formes ici, soit l'une passant par une constante nommée et l'autre étant définie à même l'instruction exports.

Le module exporte ensuite ces fonctions sous les mêmes noms (on aurait pu utiliser un nom différent dans le cas de quoi) pour que d'autres modules puissent les utiliser.

Le module affichage.js importe quant à lui ce module, puis en utilise les fonctions exportées. Voir #require pour plus d'informations sur require.

const quoi = () => {
   return "j'aime";
};
module.exports.quoi = quoi;
module.exports.qui = () => {
   return "mon prof";
};
const secret = require('./secret');
console.log("Message secret :");
console.log("${secret.quoi()} ${secret.qui}");

Le mot-clé require

Le mot-clé require permet d'exprimer le recours à un autre module, qu'il s'agisse d'un module livré avec Node.js, d'un module livré avec une bibliothèque tiers-parti, ou d'un fichier JavaScript de notre cru. Prenons un exemple simple :

L'instruction require charge le contenu d'un module (ici, le module nommé 'fs' de Node.js) et l'associe à la variable fs. Ainsi, les fonctions exportées du fichier JavaScript nommé 'fs' deviennent des méthodes de l'objet référé par fs. Voir #exports pour plus d'informations.

const fs = require('fs');

Puisque le module 'fs' permet des opérations sur le système de fichiers ('fs' signifie File System), nous allons parcourir les fichiers d'un dossier (fictif) identifié ici par la variable chemin.

const chemin = '/home/code/services/';

Enfin, à partir de la variable fs, nous appelons la méthode d'instance readdir. Cette fonction appelle une fonction en lui passant deux paramètres, soit :

  • Le paramètre nommé ici err, qui permet de représenter une erreur, par exemple dans le cas d'un chemin inexistant ou de droits d'accès insuffisants
  • Le paramètre nommé ici fichiers, qui sera la liste des fichiers du dossier représenté par chemin

... en passant à cette fonction, les paramètres indiqués. Ici, j'ai fait l'économie de tester err (en pratique, ne faites pas ça!) pour que l'exemple demeure simple, et la fonction (une λ) se limite à afficher à la console le nom de chaque fichier fich de la liste fichiers.

fs.readdir(chemin, (err, fichiers) => {
  fichiers.forEach(fich => {
    console.log(fich);
  });
});

Lectures complémentaires

Quelques liens pour enrichir le propos :


Valid XHTML 1.0 Transitional

CSS Valide !