Heim > Web-Frontend > js-Tutorial > Hauptteil

Einführung in die Moduldefinition in NodeJS

不言
Freigeben: 2018-06-30 14:31:48
Original
1568 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die Moduldefinitionsmethode in NodeJS vorgestellt und die Prinzipien von NodeJS-Modulen, allgemeinen Modulen und entsprechenden Definitionsmethoden in Form von Beispielen analysiert

Die Beispiele in In diesem Artikel wird die Definitionsmethode für das mittlere Modul von nodejs beschrieben. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

1. Moduldefinition

Das sogenannte Modul von nodejs ist eine Datei! Eine .js-Datei ist ein NodeJS-Modul. Zwischen Modulen und Dateien besteht eine Eins-zu-eins-Entsprechung, daher ist das referenzierte Modul „require('file path‘)“.

Zum Beispiel:

var circle = require('./circle.js');
console.log( 'The area of a circle of radius 4 is '
      + circle.area(4));
Nach dem Login kopieren

Dies heißt foo.js

var PI = Math.PI;
exports.area = function (r) {
 return PI * r * r;
};
exports.circumference = function (r) {
 return 2 * PI * r;
};
Nach dem Login kopieren

Dies heißt „circle.js“

Die beiden js-Codedateien werden im selben Ordner abgelegt.

Wenn Sie auf Module in anderen Ordnern verweisen möchten, schreiben Sie den Pfad direkt. Das Pfadformat hier ist das gleiche wie bei Linux: /../../.js Dies ist der absolute Pfad, ../.js ist die obere Ebene und ./.js ist der aktuelle Pfad.

Sie müssen hier auf den Unterschied zwischen exports und module.exports achten: exports ist eigentlich nur eine Referenz auf module.exports (genau wie a=2, b=a, b sich nur auf a bezieht, wenn b=c, b zeigt nicht mehr auf a), damit Sie die Bedeutung der offiziellen Website verstehen können (wenn Sie das Stammverzeichnis von Exporten als Funktion deklarieren oder ein Objekt generieren möchten, verwenden Sie bitte das Modul. Exporte statt Exporte)

2. Zirkelverweis

a.js:

console.log('a starting');
exports.done = false;
var b = require('./b.js');
console.log('in a, b.done = %j', b.done);
exports.done = true;
console.log('a done');
Nach dem Login kopieren

b.js:

console.log('b starting');
exports.done = false;
var a = require('./a.js');
console.log('in b, a.done = %j', a.done);
exports.done = true;
console.log('b done');
Nach dem Login kopieren

main.js:

console.log('main starting');
var a = require('./a.js');
var b = require('./b.js');
console.log('in main, a.done=%j, b.done=%j', a.done, b.done);
Nach dem Login kopieren

Sehen Sie, das ist ein .js unterscheidet sich von b.js. Die beiden verweisen aufeinander. Wird dies eine Endlosschleife verursachen? Nein, es liegt lediglich daran, dass ein Modul nicht geladen wurde, d. h. ein Teil eines Moduls ist nicht verfügbar. Wie hier wird a.js zuerst geladen, aber während a.js geladen wird, lädt a.js b.js. Zu diesem Zeitpunkt befindet sich a.js in einem stagnierenden Zustand, und nur die Daten vor require werden geladen b.js Es wird immer geladen. Folgendes ist das Ergebnis der Operation:

$ node main.js
main starting
a starting
b starting
in b, a.done = false
b done
in a, b.done = true
a done
in main, a.done=true, b.done=true
Nach dem Login kopieren

3. Kernmodul

Das sogenannte Kernmodul wird tatsächlich von nodejs entwickelt. Öffentliche Pakete, genau wie die öffentlichen Pakete von Java. Um auf das Kernmodul zuzugreifen, benötigen Sie einfach ('Dateiname'), damit Sie darauf zugreifen können. Tatsächlich wird das öffentliche Modulpaket unter node_modulesnpmlib platziert, das von nodejs installiert wird.

4. Dateimodul

Wenn es keine genaue Übereinstimmung für die sogenannte Referenz gibt, verwendet nodejs zuerst die Erweiterung: .js, .json und dann .node. Die js-Datei ist eine JavaScript-Datei, .json wird im JSON-Format geparst und .node wird als zusätzliches Modul mit dlopen geladen nein „/“ oder „./“ Beim Ändern von Symbolen wird das Modul in node_modules geladen. Informationen zum Speicherort dieser Datei finden Sie unten.

Ordner 5.node_modules

Wenn beim Verweisen auf das Modul keine Formatsymbolqualifikation wie „/“ „../“ „./“ vorhanden ist, dann ist es verwendet Die Suchmethode lautet wie folgt: Angenommen, Ihre Datei befindet sich in „/home/ry/projects/foo.js“ und verweist auf

. Dann lautet die Suchmethode von bar.js wie folgt:

require('bar.js')

/home /ry/projects/node_modules/bar.js

/home/ry/node_modules/bar.js/home/node_modules/bar.js
/node_modules/bar.js

Das heißt, beginnend mit dem aktuellen Straßenbett, fügen Sie Schritt für Schritt den Ordner node_modules als Moduladresse zum übergeordneten Verzeichnis hinzu.

Diese Art von Referenz hat die gleiche Analyse wie

. require('example-module/path/to/file')require('bar.js')

6. Die Referenzierung des Moduls über den Ordnernamen

ist grob in zwei Typen unterteilt: 1) Schreiben Sie die Datei package.json, die im Stammverzeichnis geschrieben wird Die Form des Projekts ist wie folgt:

{ "name" : "some-library",
 "main" : "./lib/some-library.js" }
Nach dem Login kopieren

Das so geschriebene require('./some-library') ist wirklich

require('./some-library/lib/some-library.js')
Nach dem Login kopieren

2) Stimmen Sie dem Laden der Datei index.js oder index.node direkt zu. Das Laden kann wie folgt erfolgen:

./some-library/ index.js

./some-library/index.node

7. Caching

Mehrere Verweise auf Ein Modul wird nur einmal geladen. Genau wie die statische Schlüsselwortänderung in Java. Beachten Sie jedoch, dass bei der Verwendung von

in dieser Form nicht unbedingt gewährleistet ist, dass jedes Mal auf dieselbe Datei verwiesen wird (da Sie möglicherweise in verschiedenen Ordnern darauf verweisen).

require('foo')Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Erfahren Sie mehr über das Clustermodul in Node


Einführung in die Verwendung von Angular mit Node.js

Über die node.js-Methode zum Lesen und Schreiben von Systemdateien und Verzeichnissen basierend auf dem fs-Modul

Das obige ist der detaillierte Inhalt vonEinführung in die Moduldefinition in NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage