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 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. |
|
|
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. |
|
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. |
|
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 :
... 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. |
|
Quelques liens pour enrichir le propos :