Présentation et informations
Grâce à l'API officielle de Node.js, vous pouvez voir que Node.js lui-même fournit de nombreux modules de base http://nodejs.org/api/ Ces modules de base sont compilés dans des fichiers binaires et peuvent nécessiter ('nom du module. ') Allez le chercher ; le module principal a la priorité de chargement la plus élevée (cela se reflétera lorsqu'il y aura un module portant le même nom que le module principal)
(Cette fois je parle principalement de modules personnalisés)
Node.js possède également un type de module appelé module de fichier, qui peut être un fichier de code JavaScript (.js comme suffixe de fichier), un fichier texte au format JSON (.json comme suffixe de fichier) ou un fichier édité. Fichier C/C (.node comme suffixe de fichier) ;
La méthode d'accès au module de fichier se fait via require('/filename.suffix') require('./filename.suffix') requrie('../filename.suffix') pour y accéder, le suffixe du fichier peut être omis ; avec Commencer par "/" signifie charger avec un chemin absolu, commencer par "./" et commencer par "../" signifie charger avec un chemin relatif, et commencer par "./" signifie charger des fichiers dans le même répertoire,Comme mentionné précédemment, le suffixe du fichier peut être omis. Nodejs essaie de charger le fichier js prioritaire > Créer un module personnalisé
Prenons un compteur comme exemple
Lors de l'exécution, vous pouvez constater que toutes les méthodes exposées via exports et module.exports sont accessibles !
Comme vous pouvez le voir dans l'exemple, j'ai obtenu le module via require('./1_modules_custom_counter') deux fois, mais la méthode printNextCount() a démarré à partir de 60 après la deuxième référence~~~
La raison est que si node.js appelle le même module plusieurs fois via requirerequire, il ne sera pas chargé à plusieurs reprises. Node.js mettra en cache tous les modules de fichiers chargés en fonction du nom du fichier, il ne sera donc pas rechargé
Remarque : la mise en cache par nom de fichier fait référence au nom de fichier réel, et il ne sera pas considéré comme un fichier différent simplement parce que le formulaire du chemin entrant est différent.
Il existe une méthode printOutputVal() dans le fichier 1_modules_custom_counter que j'ai créé, qui ne fournit pas de méthodes d'accès public externes via exports ou module.exports,Que se passera-t-il si le fichier 1_modules_load est directement accédé et exécuté ?
La réponse est : TypeError : l'objet #