Maison  >  Article  >  interface Web  >  Comment importer un module dans nodejs ? Introduction au processus d'exécution de require

Comment importer un module dans nodejs ? Introduction au processus d'exécution de require

青灯夜游
青灯夜游avant
2021-06-18 10:42:223365parcourir

Cet article vous donnera une introduction détaillée au processus d'exécution de require dans nodejs. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment importer un module dans nodejs ? Introduction au processus d'exécution de require

Je regardais node récemment, j'ai donc délibérément appris le processus d'introduction de ses modules. Aujourd'hui, je vais faire un compte rendu de révision, j'espère que cela vous sera utile qui lisez

Classification des modules dans le nœud

  • Module de base, ou des modules intégrés (c'est-à-dire le propre fs du nœud, http, vm...) Pour plus de détails, veuillez consulter le site officiel api

  • Tiers modules, ou packages npm auto-emballés pour un usage privé Bibliothèque ou bibliothèque publique (installés et utilisés par npm install sur npm)

  • Les modules de fichiers, fichiers internes du projet, nécessitent l'utilisation du relatif méthode de chemin ou de chemin absolu

[Apprentissage recommandé : "tutoriel nodejs"]

Importation de module requise

Mon outil de débogage Utiliser le propre de vscode

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

require process

1. Lisez le fichier et entrez le mod de retour de la méthode require. .require (chemin)

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

2. Entrez mod.require et constatez que Module.prototype.require est réellement exécuté (l'identifiant ici est le chemin initial), euh ~ Pourquoi ? Appelé Module._load, ce n'est rien, continuons

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

3. Entrez Module._load(), Module._load(id, this, /* isMain */ false) Chargez le module selon le chemin

  • Utilisez le nom du fichier comme clé de l'objet Module._cache pour vérifier si le fichier a été mis en cache. Si le cache est atteint, exporte directement
  • <.>

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

    S'il n'existe pas dans le tableau de cache, Module._resolveFilename résout le chemin du fichier en un chemin absolu, puis vérifie de manière persistante le cache si le cache l'est. hit, exports

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

    Les deux premières recherches dans le cache excluent les modules externes, puis déterminent s'il s'agit d'un module intégré. Si tel est le cas, exportez<.>

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

Aller ici signifie vraiment que ce module n'a vraiment pas été mis en cache, alors créez-en un nouveau

Comment importer un module dans nodejs ? Introduction au processus dexécution de require4. Entrez new Module () et créez un objet vide this.exports = {} : C'est l'objet d'exportation que nous souhaitons finalement, (les modules référencés dans d'autres modules ne seront pas étudiés en profondeur ici)

Comment importer un module dans nodejs ? Introduction au processus dexécution de require5. Module._cache [nom du fichier] Le chemin analysé à l'étape 3 est utilisé comme clé et l'objet créé à l'étape 4 est utilisé comme valeur et stocké dans notre cache. tableau. continue! !

Comment importer un module dans nodejs ? Introduction au processus dexécution de require6. module.load(), entrez la fonction

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

    findLongestRegisteredExtension calcule le suffixe du nom de fichier,
  • Module._extensions[extension](this, filename) appelle différentes méthodes de chargement en fonction de différents suffixes (ici utilisé est le mode stratégie )
  • Ce que j'ai frappé ici, c'est .js. Dans cette méthode, fs.readFileSync est utilisé pour lire le fichier de manière synchrone, puis le module._compile(content, filename) est appelé en tant que paramètres

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

7. Entrez module._compile() , et j'ai découvert que le contenu était utilisé comme paramètre de wrapSafe(filename, content, this) et exécuté

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

8. Entrez ensuite wrapSafe() ps : je vais parler du ancienne version ici directement, exécutez C'est plus facile à comprendre

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

  • D'abord, il appelle Module.wrap, entre dans la fonction et le module de nœud est empaqueté comme requis (fonction ( ){ }), formant un module indépendant

Comment importer un module dans nodejs ? Introduction au processus dexécution de require

  • , puis utilisez le module de chaîne encapsulé renvoyé comme paramètre vm.runInThisContext pour exécuter le code du module (même comme nouvelle fonction dans js L'effet peut être de transformer la chaîne en js pour l'exécution), pour plus de détails sur les propres méthodes intégrées du nœud, veuillez vous référer au responsable du nœud

9. À ce stade, le Le processus require d'un module a été exécuté et l'utilisateur l'obtiendra par défaut. Le résultat de retour de module.export

Résumé

  • Lire le fichier

  • Lire le fichier À l'avenir, enveloppez une fonction pour le fichier

  • Fonction de format de fonction (exports, module, require, _dirname , nom de fichier) {}

  • Placez le module via runThisContext Transformez-vous en syntaxe js pour appeler

Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à la programmation ! !

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer