qu'est-ce que le module nodejs
Les modules sont les composants de base des applications Node.js. Les fichiers et les modules sont en correspondance biunivoque. Un module Nodejs est un fichier, et ce fichier peut être du code JavaScript, du JSON ou une extension "C/C++" compilée. . L'instruction "require('file path')" peut être utilisée pour référencer des modules.
L'environnement d'exploitation de ce tutoriel : système windows7, nodejs version 12.19.0, ordinateur Dell G3.
Afin de permettre aux fichiers Node.js de s'appeler, Node.js propose un système de modules simple.
Les modules sont les composants de base des applications Node.js, et les fichiers et les modules ont une correspondance biunivoque. En d'autres termes, un fichier Node.js est un module, qui peut être du code JavaScript, JSON ou une extension C/C++ compilée.
Pour nodejs, un fichier est un module. Vous pouvez exporter l'interface ou demander l'arrivée d'autres modules.
// module1.js exports.func1 = function(){ console.log('func1 from module1 called'); }
module1 utilise la fonction func1 comme interface d'accès public du module via l'objet exports.
//module2.js var in_module1 = require('./module1.js'); in_module1.func1(); exports.func2 = function(){ console.log('func2 from module2 called'); }
module2 nécessite module1 À l'heure actuelle, in_module1 est équivalent à l'objet exports de module1. Lorsque vous utilisez in_module1 pour appeler func1, cela équivaut à appeler func1 via l'objet exports de module1.
Dans le même temps, la propre fonction func2 de module2 sert également d'interface publique de module2 via l'objet d'exportation du module.
// module3.js var in_module2 = require('./module2.js'); in_module2.func2();
De même, module3 nécessite module2. À l'heure actuelle, in_module2 est équivalent à l'objet exports de module2.
Les résultats d'exécution sont les suivants :
rlan@rlan-LA:~/nodejs/nodetest$ node module2.js func1 from module1 called rlan@rlan-LA:~/nodejs/nodetest$ node module3.js func1 from module1 called func2 from module2 called
Le module introduit par nodejs obtient non seulement l'interface publique du module, mais fait également référence à d'autres instructions dans le fichier, par exemple :
module1.js est remplacé par
// module2.js console.log('this is in module2'); var in_module1 = require('./module1.js'); in_module1.func1(); exports.func2 = function(){ console.log('func2 from module2 called'); }
module2 introduit module1 La fonction func1 exécute également l'instruction print dans module1 :
rlan@rlan-LA:~/nodejs/nodetest$ node module1.js this is in module1 rlan@rlan-LA:~/nodejs/nodetest$ node module2.js this is in module2 - module2 self this is in module1 - require module1 func1 from module1 called - module2 self
Maintenant, module2 charge module1, module3 charge module2, que se passe-t-il si module3 charge à nouveau module1 ?
// module3.js var in_module1 = require('./module1.js'); var in_module2 = require('./module2.js'); in_module1.func1(); in_module2.func2();
À ce moment, le module3 charge d'abord le module1, puis le module2, et le module2 lui-même charge la partie du module1. Le résultat en cours d'exécution est
rlan@rlan-LA:~/nodejs/nodetest$ node module3.js this is in module1 - require module1 this is in module2 - require module2 func1 from module1 called - require module2 func1 from module1 called - module3 self func2 from module2 called - module3 self
Si l'ordre requis du module3 est ajusté :
// module3.js var in_module2 = require('./module2.js'); var in_module1 = require('./module1.js'); in_module1.func1(); in_module2.func2();
Le résultat en cours d'exécution est :
rlan@rlan-LA:~/nodejs/nodetest$ node module3.js this is in module2 - require module2 this is in module1 - require module2 func1 from module1 called - require module2 func1 from module1 called - module3 self func2 from module2 called - module3 self
Il semble que nodejs utilise un mécanisme pour garantir que le même module ne sera pas chargé à plusieurs reprises dans un autre module, donc la ligne
this is in module1
n'apparaît qu'une seule fois, bien qu'elle semble être chargée deux fois dans module3.js.
Alors, que se passe-t-il s'il y a un chargement en boucle ? Maintenant, nous laissons module1 exiger le module2 :
// module1.js console.log('this is in module1'); var in_module2 = require('./module2.js'); exports.func1 = function(){ console.log('func1 from module1 called'); }
// module2.js console.log('this is in module2'); var in_module1 = require('./module1.js'); in_module1.func1(); exports.func2 = function(){ console.log('func2 from module2 called'); }
Les résultats d'exécution sont les suivants :
rlan@rlan-LA:~/nodejs/nodetest$ node module1.js this is in module1 this is in module2 /home/rlan/nodejs/nodetest/module2.js:4 in_module1.func1(); ^ TypeError: in_module1.func1 is not a function at Object.<anonymous> (/home/rlan/nodejs/nodetest/module2.js:4:12) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at require (internal/module.js:12:17) at Object.<anonymous> (/home/rlan/nodejs/nodetest/module1.js:3:18) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:417:10) rlan@rlan-LA:~/nodejs/nodetest$ node module2.js this is in module2 this is in module1 func1 from module1 called
nodejs semble empêcher le comportement de chargement lui-même Lors de l'exécution de module2, le comportement est le même que celui du module1 qui ne charge pas le module2, et non. une erreur est signalée. Lors de l'exécution de module1, lorsque je suis allé au module2 et que j'ai ignoré l'instruction require module1, module2 a appelé func1 de module1 et le programme a mal tourné.
Pour résumer, les instructions require imbriquées qui chargent des modules (ou se chargent) à plusieurs reprises dans nodejs ne peuvent pas être exécutées correctement.
【Apprentissage recommandé : "Tutoriel Nodejs"】
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les principales différences entre Node.js et Tomcat sont : Runtime : Node.js est basé sur le runtime JavaScript, tandis que Tomcat est un conteneur de servlet Java. Modèle d'E/S : Node.js utilise un modèle asynchrone non bloquant, tandis que Tomcat est un modèle de blocage synchrone. Gestion de la concurrence : Node.js gère la concurrence via une boucle d'événements, tandis que Tomcat utilise un pool de threads. Scénarios d'application : Node.js convient aux applications en temps réel, gourmandes en données et à forte concurrence, et Tomcat convient aux applications Web Java traditionnelles.

Node.js est un environnement d'exécution JavaScript côté serveur, tandis que Vue.js est un framework JavaScript côté client permettant de créer des interfaces utilisateur interactives. Node.js est utilisé pour le développement côté serveur, comme le développement d'API de service back-end et le traitement des données, tandis que Vue.js est utilisé pour le développement côté client, comme les applications monopage et les interfaces utilisateur réactives.

Node.js peut être utilisé comme framework backend car il offre des fonctionnalités telles que des performances élevées, l'évolutivité, la prise en charge multiplateforme, un écosystème riche et une facilité de développement.

Il existe deux fichiers liés à npm dans le répertoire d'installation de Node.js : npm et npm.cmd. Les différences sont les suivantes : différentes extensions : npm est un fichier exécutable et npm.cmd est un raccourci de fenêtre de commande. Utilisateurs Windows : npm.cmd peut être utilisé à partir de l'invite de commande, npm ne peut être exécuté qu'à partir de la ligne de commande. Compatibilité : npm.cmd est spécifique aux systèmes Windows, npm est disponible multiplateforme. Recommandations d'utilisation : les utilisateurs Windows utilisent npm.cmd, les autres systèmes d'exploitation utilisent npm.

Oui, Node.js est un langage de développement backend. Il est utilisé pour le développement back-end, notamment la gestion de la logique métier côté serveur, la gestion des connexions à la base de données et la fourniture d'API.

Les variables globales suivantes existent dans Node.js : Objet global : global Module principal : processus, console, nécessiter Variables d'environnement d'exécution : __dirname, __filename, __line, __column Constantes : undefined, null, NaN, Infinity, -Infinity

Les principales différences entre Node.js et Java résident dans la conception et les fonctionnalités : Piloté par les événements ou piloté par les threads : Node.js est piloté par les événements et Java est piloté par les threads. Monothread ou multithread : Node.js utilise une boucle d'événements monothread et Java utilise une architecture multithread. Environnement d'exécution : Node.js s'exécute sur le moteur JavaScript V8, tandis que Java s'exécute sur la JVM. Syntaxe : Node.js utilise la syntaxe JavaScript, tandis que Java utilise la syntaxe Java. Objectif : Node.js convient aux tâches gourmandes en E/S, tandis que Java convient aux applications de grande entreprise.

Node.js et Java ont chacun leurs avantages et leurs inconvénients en matière de développement Web, et le choix dépend des exigences du projet. Node.js excelle dans les applications en temps réel, le développement rapide et l'architecture de microservices, tandis que Java excelle dans la prise en charge, les performances et la sécurité de niveau entreprise.
