Ladevorgang des NodeJS-Pakets

WBOY
Freigeben: 2023-05-18 10:27:37
Original
695 Leute haben es durchsucht

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:

  1. Absoluter Pfad: Beginnen Sie mit / Oder C: und andere absolute Pfade beginnend mit dem Pfad.
  2. 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.
  3. 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:

  1. Wenn der absolute Pfad übergeben wird, wird dieser direkt als zu ladender Modulpfad verwendet.
  2. Wenn ein relativer Pfad übergeben wird, wird dieser in einen absoluten Pfad als zu ladender Modulpfad umgewandelt.
  3. 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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!