La spécification JavaScript (ECMAScript) ne définit pas un ensemble complet de bibliothèques standard qui peuvent être appliquées à la plupart des programmes. CommonJS fournit un ensemble de spécifications de bibliothèque standard JavaScript. Le nœud implémente la spécification CommonJS.
Bases du module
Dans Node, les modules et les fichiers correspondent un par un. Nous définissons un module:
La copie de code est la suivante:
// cercle.js
var pi = math.pi;
// zone d'exportation de la fonction
export.area = fonction (r) {
retour pi * r * r;
}
// Exportation Fonction Circuitference
export.Circumference = fonction (r) {
retour 2 * pi * r;
};
Ici, les fonctions qui doivent être exportées sont ajoutées à l'objet d'exportations. Les variables locales du module ne sont pas accessibles à l'extérieur (par exemple, la variable PI dans l'exemple ci-dessus). L'appel nécessite de charger le module Circle.js:
La copie de code est la suivante:
var cercle = require ('./ cercle.js');
Console.log («La zone d'un cercle de rayon 4 est»
+ Circle.Area (4));
Comme mentionné, dans le module, il existe un objet de module qui représente le module lui-même, et les exportations sont l'attribut du module.
Chargement des modules
Le nœud sera tampon des modules chargés pour éviter les frais généraux de rechargement:
La copie de code est la suivante:
// test.js
console.log ("Je suis ici");
Test de module de chargement.js plusieurs fois
La copie de code est la suivante:
// seule sortie "Je suis ici" une fois
exiger ('./ test');
exiger ('./ test');
Lorsque le fichier de chargement n'a pas de suffixe, le nœud essaie d'ajouter le suffixe et de charger:
1..js (fichier source javascript)
2..NODE (module d'extension C / C ++)
3..json (fichier json)
Il existe plusieurs types principaux de modules:
1. Module de base. Les modules de base ont été compilés en nœud, et nous pouvons trouver ces modules de base dans le répertoire Lib dans son code source. Modules de noyau commun: net, http, module FS, etc.
2. Module de fichier. Le module de fichier est chargé par un chemin relatif ou absolu, comme le cercle.js que nous avons vu ci-dessus
3. Personnalisez le module. Le module personnalisé est situé dans le répertoire Node_Modules. Les différents modules que nous avons installés via NPM sont placés dans le répertoire Node_Modules.
Les modules de base sont toujours chargés en premier. S'il y a un module personnalisé HTTP, le module de base HTTP sera toujours chargé au lieu du module personnalisé HTTP lors du chargement. Lorsque vous chargez un module personnalisé, recherchez d'abord le répertoire Node_Modules dans le répertoire actuel, puis recherchez le répertoire Node_Modules dans le répertoire parent, et ainsi de suite jusqu'à le répertoire racine.
Exiger lorsque le module chargé n'est pas un fichier, mais un répertoire, un tel répertoire est appelé un package. Il y a un fichier nommé package.json (fichier de description du package) dans le package, par exemple:
La copie de code est la suivante:
{"Name": "Some-Library",
"Main": "./lib/some-library.js"}
où le principal indique le module qui doit être chargé. Si package.json n'existe pas dans le package ou package.json ne spécifie pas le module principal, le nœud essaiera de charger index.js, index.node, index.json.
Lors du chargement d'un module JavaScript, le module chargé est enveloppé dans une fonction:
La copie de code est la suivante:
fonction (module, exportations, __filename, __dirname, ...) {
Module JavaScript
}
Le module, les exportations, __filename, __dirname, etc. accessibles par chaque module JavaScript sont réellement transmis par des paramètres de fonction. En raison de ce type de package, les variables locales du module sont inaccessibles à l'extérieur. Mais parfois, il y a des problèmes difficiles à comprendre, comme:
test1.js
La copie de code est la suivante:
exportations = {
Nom: «Name5566»,
}
test2.js
La copie de code est la suivante:
module.exports = {
Nom: «Name5566»,
}
Chargez ces deux modules:
La copie de code est la suivante:
var test1 = require ('./ test1.js');
console.log (test1.name); // indéfini
var test2 = require ('./ test2.js');
console.log (test2.Name); // name5566
Les exportations sont passées sous forme de paramètres vers le module. Nous pouvons naturellement ajouter des attributs (ou des méthodes) à l'objet d'exportation via exports.x, mais attribuer directement une valeur aux exportations (par exemple, exports = x) modifie simplement la valeur du paramètre formel plutôt que le paramètre réel, donc: donc:
1. Lors de l'ajout de propriétés aux exportations, utilisez des exportations
2. Lors de l'attribution d'une valeur aux exportations, utilisez le module.exports
Sac
Selon la spécification CommonJS, un package complet doit inclure:
1.Package.json Fichier de description du package
2. répertoire de fichiers binaires de bin
3.Le répertoire de code JavaScript Lib
4. Directeur de documents DOC
5. Répertoire du code de test
NPM est un outil de gestion des packages pour le nœud. Utilisation commune:
Afficher la documentation de commande:
La copie de code est la suivante:
Installation d'aide au NPM
Affichez la documentation de l'installation de la commande.
Installez un package:
La copie de code est la suivante:
NPM Installer Redis
Installez le package Redis. La commande d'installation installe le package dans le répertoire Node_Modules dans le répertoire actuel.
Supprimer un package:
La copie de code est la suivante:
NPM Retirez Redis
Retirez le package Redis. La commande de suppression supprimera le package dans le répertoire actuel.