Heim > Web-Frontend > js-Tutorial > Nodejs minimalistisches Einführungs-Tutorial (1): Modulmechanismus_node.js

Nodejs minimalistisches Einführungs-Tutorial (1): Modulmechanismus_node.js

WBOY
Freigeben: 2016-05-16 16:32:52
Original
1111 Leute haben es durchsucht

Die JavaScript-Spezifikation (ECMAScript) definiert keine vollständige Standardbibliothek, die von den meisten Programmen verwendet werden kann. CommonJS bietet eine Reihe von JavaScript-Standardbibliotheksspezifikationen. Der Knoten implementiert die CommonJS-Spezifikation.

Modulgrundlagen

In Node haben Module und Dateien eine Eins-zu-Eins-Entsprechung. Wir definieren ein Modul:

Code kopieren Der Code lautet wie folgt:

// Circle.js
var PI = Math.PI;

//Funktionsbereich exportieren
exports.area = function(r) {
Rückgabe PI * r * r;
}

//Funktionsumfang exportieren
exports.circumference = function(r) {
Geben Sie 2 * PI * r;
zurück };

Fügen Sie hier die Funktionen hinzu, die zum Exportobjekt exportiert werden müssen. Lokale Variablen eines Moduls sind von außen nicht zugänglich (z. B. die PI-Variable im obigen Beispiel). Rufen Sie require auf, um das Modul Circle.js zu laden:
Code kopieren Der Code lautet wie folgt:

var Circle = require('./circle.js');
console.log('Die Fläche eines Kreises mit Radius 4 ist '
            circle.area(4));

Übrigens gibt es im Modul ein Modulobjekt, das das Modul selbst darstellt, und exports ist das Attribut des Moduls.

Modul wird geladen

Der Knoten puffert geladene Module, um den Mehraufwand für das erneute Laden zu vermeiden:

Code kopieren Der Code lautet wie folgt:

// test.js
console.log("Ich bin hier");

Modul test.js mehrmals laden

Code kopieren Der Code lautet wie folgt:

// „Ich bin hier“
nur einmal ausgeben require('./test');
require('./test');

Wenn Sie eine Datei ohne Suffix laden, versucht Node, ein Suffix hinzuzufügen und zu laden:

1..js (JavaScript-Quelldatei)
2..Knoten (C/C-Erweiterungsmodul)
3..json (JSON-Datei)

Es gibt mehrere Hauptkategorien von Modulen:

1. Kernmodul. Die Kernmodule wurden in Node kompiliert und wir finden diese Kernmodule im lib-Verzeichnis im Quellcode. Gemeinsame Kernmodule: Net-, http-, FS-Module usw.

2. Dateimodul. Dateimodule werden über einen relativen oder absoluten Pfad geladen, wie zum Beispiel „circle.js“

, das wir oben gesehen haben

3. Benutzerdefiniertes Modul. Benutzerdefinierte Module befinden sich im Verzeichnis „node_modules“ und die verschiedenen Module, die wir über npm installieren, werden im Verzeichnis „node_modules“

abgelegt

Das Kernmodul wird immer zuerst geladen. Wenn ein benutzerdefiniertes Modul http vorhanden ist, wird weiterhin das Kernmodul http anstelle des benutzerdefinierten Moduls http geladen. Suchen Sie beim Laden eines benutzerdefinierten Moduls zunächst nach dem Verzeichnis „node_modules“ im aktuellen Verzeichnis, dann nach dem Verzeichnis „node_modules“ unter dem übergeordneten Verzeichnis und so weiter bis zum Stammverzeichnis.

require Wenn das geladene Modul keine Datei, sondern ein Verzeichnis ist, wird ein solches Verzeichnis als Paket bezeichnet. Im Paket gibt es eine Datei mit dem Namen package.json (Paketbeschreibungsdatei), zum Beispiel:

Code kopieren Der Code lautet wie folgt:

{ "name" : "some-library",
„main“: „./lib/some-library.js“ }

Wobei main das Modul angibt, das geladen werden muss. Wenn package.json nicht im Paket vorhanden ist oder das Hauptmodul nicht in package.json angegeben ist, versucht Node, index.js, index.node und index.json zu laden.

Beim Laden eines JavaScript-Moduls wird das geladene Modul in eine Funktion eingeschlossen:

Code kopieren Der Code lautet wie folgt:

function(module, exports, __filename, __dirname, ...) {
JavaScript-Modul
}

Das Modul, die Exporte, der __Dateiname, der __Verzeichnisname usw., auf die jedes JavaScript-Modul zugreift, werden tatsächlich über Funktionsparameter übergeben. Aufgrund dieser Umhüllung sind die lokalen Variablen des Moduls von außen nicht zugänglich. Aber manchmal gibt es Probleme, die schwer zu verstehen sind, wie zum Beispiel:

test1.js

Code kopieren Der Code lautet wie folgt:

exporte = {
Name: 'Name5566',
}

test2.js

Code kopieren Der Code lautet wie folgt:

module.exports = {
Name: 'Name5566',
}

Laden Sie diese beiden Module:

Code kopieren Der Code lautet wie folgt:

var test1 = require('./test1.js');
console.log(test1.name); // undefiniert
var test2 = require('./test2.js');
console.log(test2.name); // Name5566

Exports wird als Parameter an das Modul übergeben. Wir können dem Exports-Objekt natürlich Attribute (oder Methoden) über exports.x hinzufügen, aber die direkte Zuweisung eines Werts an exports (z. B. exports = x) ändert nur das Formale Parameter statt des tatsächlichen Parameters, daher:

1. Wenn Sie Attribute zu Exporten hinzufügen, verwenden Sie Exporte
2. Wenn Sie Exporten Werte zuweisen, verwenden Sie module.exports

Packen

Gemäß den CommonJS-Spezifikationen sollte ein Komplettpaket Folgendes enthalten:

1.package.json Paketbeschreibungsdatei
2.bin-Binärdateiverzeichnis
3.lib JavaScript-Codeverzeichnis
4.doc-Dokumentverzeichnis
5.Test-Testcode-Verzeichnis

NPM ist ein Paketverwaltungstool für Node. Allgemeine Verwendung:

Sehen Sie sich die Dokumentation für den Befehl an:

Code kopieren Der Code lautet wie folgt:

npm help install

Siehe die Dokumentation zum Installationsbefehl.

Installieren Sie ein Paket:

Code kopieren Der Code lautet wie folgt:

npm install redis

Installieren Sie das Redis-Paket. Der Installationsbefehl installiert das Paket im Verzeichnis node_modules im aktuellen Verzeichnis.

Ein Paket entfernen:

Code kopieren Der Code lautet wie folgt:

npm redis entfernen

Entfernen Sie das Redis-Paket. Der Befehl „remove“ entfernt das Paket im aktuellen Verzeichnis.
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