Lors du développement d'applications Web complexes, il est généralement nécessaire de diviser chaque fonction, de l'encapsuler dans différents fichiers et de référencer le fichier si nécessaire, c'est-à-dire une gestion modulaire du code. Presque tous les langages de programmation ont leurs propres méthodes d'organisation des modules, telles que les packages en Java et les assemblys en C#, et Node adopte la spécification du module CommonJS.
Spécification du module
CommonJS vise à standardiser JS qui s'exécute en dehors du navigateur et a résolu un grand nombre de problèmes JS ( tels que les conflits de noms mondiaux). Dans l'implémentation Node de CommonJS, chaque module sera encapsulé dans un fichier JS distinct, c'est-à-dire qu'un fichier est un module et le chemin du fichier est le nom du module. Lors de l'écriture de chaque module, les trois variables prédéfinies suivantes sont disponibles :
require()
Cette fonction est utilisée dans Pour charger et utiliser d'autres modules dans le module actuel, transmettez un nom de module et renvoyez un objet d'exportation de module. Le nom du module peut utiliser un chemin relatif (commençant par ./) ou un chemin absolu (commençant par / ou une lettre de lecteur telle que C :). De plus, l'extension .js dans le nom du module peut être omise. À ce stade, Node recherchera un dossier du même nom. S'il est introuvable, il recherchera un fichier js du même nom. Vous pouvez également utiliser cette fonction pour charger et utiliser un fichier JSON, mais l'extension .json ne peut pas être omise.
exports
Cet objet est l'objet d'exportation du module actuel et est utilisé pour exporter les méthodes et propriétés publiques du module. Il est par défaut un objet vide. {}. Lorsque d'autres modules utilisent le module actuel via la fonction require(), ils obtiennent l'objet exports du module actuel. Une méthode publique est exportée dans le code suivant :
exports.hello = function() { console.log("Hello World!"); };
module
Cet objet permet de fournir les métadonnées du module actuel et d'autres informations associées, mais la plus utile est d'utiliser son attribut exports pour remplacer l'objet d'exportation du module actuel. Par exemple, l'objet d'exportation du module est un objet normal par défaut. Vous pouvez utiliser la méthode suivante pour le transformer en fonction :
module.exports = function() { console.log("Hello World!"); };
Remarque : lors de l'utilisation du méthode ci-dessus, l'objet exports Toutes les modifications seront ignorées !
Initialisation du module
Le code JS dans un module n'est exécuté qu'une seule fois lors de la première utilisation du module, et est initialisé lors exécution L'objet exporté du module. Ultérieurement, l'objet d'exportation mis en cache est réutilisé.
Définir un module dans test.js
//定义私有变量 var name = ""; function setName(n) { name = n; } function logName() { console.log(name); } //导出公有方法 exports.setName = setName; exports.logName = logName;
Charger le module de test dans main
//加载test模块 var test1 = require("./test.js"), test2 = require("./test.js"); //使用test1 test1.setName("Neo"); //使用test2 test2.logName(); //Neo
On peut voir que peu importe le nombre d'appels de require(), le même module n'est chargé qu'une seule fois et la même instance est obtenue en référençant plusieurs fois.
Module principal
Le module transmis à Node via les paramètres de ligne de commande pour démarrer le programme est appelé module principal. Le module principal est responsable. pour planifier et composer l'ensemble de l'application. D'autres modules du programme fonctionnent ensemble. Par exemple, lors du démarrage du programme via la ligne de commande suivante, main.js est le module principal :
$ node main.js
Module binaire
En plus d'utiliser JS pour écrire des modules, Node prend également en charge l'utilisation de C/C++ pour écrire des modules binaires. Les modules binaires compilés peuvent être utilisés de la même manière que les modules JS, sauf que l'extension de fichier est. .nœud. Bien que les modules binaires puissent utiliser toutes les fonctions fournies par le système d'exploitation, ils sont difficiles à utiliser sur toutes les plateformes.
Recommandations associées :
Explication détaillée de la syntaxe du module dans JavaScript ES6
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!