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:
Wenn wir die Funktion require aufrufen und einen Pfadparameter übergeben, führt Node.js eine Pfadanalyse gemäß den folgenden Regeln durch:
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. 如果在所有目录中都没有找到该模块名的文件夹,则抛出模块加载失败的异常。
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!