Latest web development tutorials

système modulaire Node.js

Pour rendre le fichier Node.js peut appeler l'autre, Node.js fournit un système modulaire simple.

Le module est une partie essentielle de Node.js applications, fichiers et modules est un pour un. En d'autres termes, un fichier Node.js est un module, ce fichier peut être le code JavaScript, JSON ou extensions compilées C / C ++.

Créer un module

Dans Node.js, créez un module est très simple, comme nous créons un fichier «main.js», comme suit:

var hello = require('./hello');
hello.world();

L'exemple ci-dessus, le code exige ( './ bonjour') a introduit le répertoire du fichier hello.js courant (./ du répertoire courant, Node.js suffixe js par défaut).

Node.js fournit des exportations et nécessitent deux objets, où les exportations sont des interfaces de modules ouverts nécessitent un module d'acquisition de l'interface externe, à savoir le module d'acquisition de cible des exportations.

Ensuite, nous arrivons à créer un fichier hello.js, comme suit:

exports.world = function() {
  console.log('Hello World');
}

Dans l'exemple ci-dessus, hello.js exportations par le monde comme un module d'interface d'accès aux objets, ce module dans main.js chargé via require ( './ bonjour'), ​​vous pouvez accéder directement à des membres de hello.js de l'objet dans les exportations la fonction.

Parfois, nous voulons juste pour emballer un module objet, le format est le suivant:

module.exports = function() {
  // ...
}

Par exemple:

//hello.js 
function Hello() { 
	var name; 
	this.setName = function(thyName) { 
		name = thyName; 
	}; 
	this.sayHello = function() { 
		console.log('Hello ' + name); 
	}; 
}; 
module.exports = Hello;

Ainsi, vous obtenez un objet direct:

//main.js 
var Hello = require('./hello'); 
hello = new Hello(); 
hello.setName('BYVoid'); 
hello.sayHello(); 

Le seul changement est l'utilisation d'un module d'interface module.exports = Bonjour remplacé exports.world = function () {}. Lors du référencement du module extérieur, Bonjour objet dont l'objet interface est d'être sortie elle-même, plutôt que les exportations d'origine.


Où mettre le module serveur

Peut-être vous avez remarqué que nous avons utilisé dans le code du module. Comme ceci:

var http = require("http");

...

http.createServer(...);

Node.js est livré avec une fonctionnalité appelée module "http", nous lui demandons de retourner de la valeur à une variable locale dans notre code.

Cela nous amène dans une variable locale a toutes les méthodes publiques du module http fournit un objet.

méthodes Node.js exigent la stratégie de recherche de fichier est le suivant:

Comme il y a quatre modules de classe (module primaire et trois fichier modules) Node.js, bien exiger méthode est extrêmement simple, mais à l'intérieur il est très complexe de chargement, charger leurs priorités sont différentes. Comme cela est représenté ci-dessous:

nodejs-besoin

Chargé du module de cache de fichiers

Malgré le module différentes priorités du module et le fichier natif, mais il ne prendra pas la priorité sur le fichier du module de charge existant à partir du module de cache.

Chargement du module natif

priorité du module natif après le module de cache de fichiers de priorité. nécessiter des méthodes Après l'analyse du nom de fichier, l'enregistrement prioritaire si le module dans une liste de module natif. Dans le module http, par exemple, bien qu'il y ait un fichier http / http.js / http.node / http.json dans le répertoire, require ( "http") ne sera pas chargé à partir du fichier, mais chargé à partir du module natif.

module natif dispose également d'une zone tampon, il est également de préférence chargé à partir de la mémoire cache. Si le tampon ne soit pas chargé avant, puis d'appeler le module de chargement natif sera chargé et exécuté.

Charger à partir du fichier

Lorsque le fichier n'existe pas dans le module de mémoire cache, et non pas un module natif quand, Node.js nécessitera méthode d'analyse des paramètres entrants, et charger le fichier réel du système de fichiers, le processus de chargement de la compilation et les détails d'emballage dans la section précédente Il a été introduit, où nous allons décrire en détail le processus pour trouver le module de fichiers, ce qui a aussi quelques détails intéressantes.

nécessite la méthode de transfert accepte les paramètres suivants:

  • http, fs, chemin d'accès, etc., module natif.
  • ./mod ou ../mod module de fichier de chemin relatif,.
  • / Pathtomodule / mod, le chemin absolu du module de fichier.
  • mod, module de fichier de module non-natif.