Ladevorgang des NodeJS-Pakets
Node.js ist eine Javascript-Laufumgebung, die auf ereignisgesteuerter, nicht blockierender E/A basiert. Sie ermöglicht uns eine bequemere Organisation und Verwaltung von Code durch ein integriertes modulares System. In Node.js ist Modularisierung ein wichtiges Konzept. Jede Datei wird als unabhängiges Modul behandelt, und diese Module können über die Funktion require geladen werden.
In Node.js ist der Modulladevorgang hauptsächlich in drei Schritte unterteilt: Pfadanalyse, Dateispeicherort und Kompilierungsausführung. Im Folgenden werden wir den Prozess und das Funktionsprinzip dieser drei Schritte im Detail vorstellen.
Pfadanalyse
In Node.js hat der unterscheidbare Pfad des Moduls drei Formen:
- Absoluter Pfad: Beginnen Sie mit / Oder C: und andere absolute Pfade beginnend mit dem Pfad.
- Relativer Pfad: ein Pfad, der mit einem relativen Pfad wie ./ oder ../ beginnt. Der relative Pfad ist relativ zu dem Verzeichnis, in dem sich die aktuelle Datei befindet.
- Modulpfad: Mithilfe des Modulnamens oder des Pfads, in dem sich die Moduldatei befindet, als Kennung können Sie über die Anforderungsfunktion andere Module im Modul laden.
Wenn wir die Funktion require aufrufen und einen Pfadparameter übergeben, führt Node.js eine Pfadanalyse gemäß den folgenden Regeln durch:
- Wenn der absolute Pfad übergeben wird, wird dieser direkt als zu ladender Modulpfad verwendet.
- Wenn ein relativer Pfad übergeben wird, wird dieser in einen absoluten Pfad als zu ladender Modulpfad umgewandelt.
-
Wenn der Modulpfad übergeben wird, befolgen Sie die folgenden Schritte:
a Verwenden Sie den Modulpfad als Schlüsselwert und suchen Sie ihn im Modulcache Objekt Ob das Modul geladen wurde. Wenn es geladen wurde, wird das Exportobjekt des Moduls direkt zurückgegeben.
b Wenn das Modul nicht in den Modulcache geladen wurde, befolgen Sie die folgenden Schritte, um es zu finden:
i. Wenn der Modulname / enthält, ist der Modulpfad gilt als absoluter Pfad, der direkt geladen wird.
ii. Wenn der Modulname mit einem relativen Pfad wie ./ oder ../ beginnt, wird der Pfad in einen absoluten Pfad umgewandelt und dann geladen.
iii. Wenn der Modulname nicht mit oder / beginnt, führen Sie die folgenden Schritte aus, um Folgendes zu finden:
1. 从当前文件所在目录开始,往上逐级查找node_modules目录中是否包含有该模块名的文件夹,如果找到了,则加载该文件夹中的index.js文件。 2. 如果在当前文件所在目录下没有找到该模块名的文件夹,则从当前目录的父目录开始,往上逐级查找node_modules目录中是否包含有该模块名的文件夹,直到到达系统根目录或者找到该模块名的文件夹为止。 3. 如果在所有目录中都没有找到该模块名的文件夹,则抛出模块加载失败的异常。
Nach dem Login kopieren
Auf diese Weise Durch die Pfadauflösung können wir den Dateipfad finden, in dem sich das zu ladende Modul befindet.
Dateispeicherort
Nachdem Node.js den Pfad des Moduls bestätigt hat, versucht Node.js als nächstes, das Modul zu lokalisieren, dh die dem Modul entsprechende Datei zu finden.
Bei Javascript-Dateien vervollständigt Node.js den Suffixnamen standardmäßig zu .js. Wenn der Dateiname kein Suffix enthält, versucht Node.js, vor der Suche nacheinander die Suffixe .js, .json und .node hinzuzufügen.
Wenn beim Versuch, eine Datei zu finden, ein Verzeichnis mit demselben Namen wie der analysierte Pfad gefunden wird, behandelt Node.js das Verzeichnis als Paket.
Bei Paketen sucht Node.js in diesem Verzeichnis nach der Datei package.json, um den Eintragsdateipfad des Pakets zu erhalten. Wenn die Datei package.json gefunden wird, verwendet Node.js den im Hauptfeld angegebenen Modulpfad als Eintragsdatei. Wenn das Hauptfeld nicht angegeben ist, wird standardmäßig index.js als Eintragsdatei verwendet.
Wenn die Datei package.json nicht im Paketverzeichnis gefunden wird oder das Hauptfeld nicht in der Datei package.json angegeben ist, verwendet Node.js index.js im Paketverzeichnis als Eintragsdatei standardmäßig.
Kompilieren und ausführen
Nachdem Node.js die Datei gefunden hat, kompiliert Node.js die Datei und führt sie aus.
Für Javascript-Dateien verwendet Node.js die V8-Engine zur Kompilierung und Ausführung. Während des Kompilierungs- und Ausführungsprozesses kapselt Node.js die Variablen und Methoden in der Datei in einem Abschluss, um Kontaminationen und Konflikte von Variablen und Methoden zu vermeiden. Gleichzeitig schließt Node.js auch den gesamten Code in der Datei in einen try...catch-Block ein, um die Ausnahme abzufangen und auszulösen.
Während des Kompilierungs- und Ausführungsprozesses entscheidet Node.js auch, ob andere Module, von denen das Modul abhängt, rekursiv geladen werden sollen, basierend darauf, ob die Datei einen erforderlichen Funktionsaufruf enthält. Wenn die Datei einen erforderlichen Funktionsaufruf enthält, lädt Node.js andere Module, von denen das Modul abhängig ist, gemäß der zuvor beschriebenen Methode und übergibt die Exportobjekte dieser abhängigen Module als Parameter an die Funktion, die der Datei zu diesem Zweck entspricht. Dateinutzung.
Zusammenfassung
In Node.js ist das Laden von Modulen über die Require-Funktion ein wichtiger Vorgang. Während des Modulladevorgangs durchläuft Node.js mehrere Schritte wie Pfadanalyse, Dateispeicherort sowie Kompilierung und Ausführung, um das Modul zu laden und auszuführen. Wenn Sie den Modulladeprozess von Node.js beherrschen, können Sie die modularen Programmierideen von Node.js besser verstehen und so die Entwicklungseffizienz und Codequalität verbessern.
Das obige ist der detaillierte Inhalt vonLadevorgang des NodeJS-Pakets. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In dem Artikel wird die Verwendung von UseEffect in React, einen Haken für die Verwaltung von Nebenwirkungen wie Datenabrufen und DOM -Manipulation in funktionellen Komponenten erläutert. Es erklärt die Verwendung, gemeinsame Nebenwirkungen und Reinigung, um Probleme wie Speicherlecks zu verhindern.

Lazy Ladeverzögerung des Ladens von Inhalten bis zur Bedarf, Verbesserung der Webleistung und Benutzererfahrung durch Reduzierung der anfänglichen Ladezeiten und des Serverlasts.

Funktionen höherer Ordnung in JavaScript verbessern die Übersichtlichkeit, Wiederverwendbarkeit, Modularität und Leistung von Code durch Abstraktion, gemeinsame Muster und Optimierungstechniken.

In dem Artikel wird das Currying in JavaScript, einer Technik, die Multi-Argument-Funktionen in Einzelargument-Funktionssequenzen verwandelt. Es untersucht die Implementierung von Currying, Vorteile wie teilweise Anwendungen und praktische Verwendungen, Verbesserung des Code -Lesens

Der Artikel erläutert den Versöhnungsalgorithmus von React, der das DOM effizient aktualisiert, indem virtuelle DOM -Bäume verglichen werden. Es werden Leistungsvorteile, Optimierungstechniken und Auswirkungen auf die Benutzererfahrung erörtert.

In Artikel werden die Verbindungskomponenten an Redux Store mit Connect () verbinden, wobei MapStatetoprops, MapDispatchtoprops und Leistungsauswirkungen erläutert werden.

Der Artikel erläutert den Usecontext in React, was das staatliche Management durch Vermeidung von Prop -Bohrungen vereinfacht. Es wird von Vorteilen wie zentraler Staat und Leistungsverbesserungen durch reduzierte Neulehre erörtert.

In Artikeln werden das Standardverhalten bei Ereignishandlern mithilfe von PURDDEFAULT () -Methoden, seinen Vorteilen wie verbesserten Benutzererfahrungen und potenziellen Problemen wie Barrierefreiheitsproblemen verhindern.
