Modularität in Node.js, npm-Paketmanager erklärt

Modularität in Node.js, npm-Paketmanager erklärt

Das Grundkonzept der Modularität

Was ist Modularität

Unter Modularität versteht man den Vorgang, bei dem ein System bei der Lösung eines komplexen Problems von oben nach unten in mehrere Module aufgeteilt wird. Module sind Einheiten des Gesamtsystems, die kombiniert, zerlegt und ersetzt werden können.

Module sind die grundlegenden Komponenten von Node.js-Anwendungen und es besteht eine Eins-zu-eins-Entsprechung zwischen Dateien und Modulen. Mit anderen Worten ist eine Node.js-Datei ein Modul, das JavaScript-Code, JSON oder eine kompilierte C/C++-Erweiterung sein kann.

Modularität in der Programmierung bedeutet, eine große Datei nach festen Regeln in mehrere unabhängige und voneinander abhängige kleine Module aufzuteilen.

Die Vorteile der modularen Zerlegung

  • Verbesserte Wiederverwendbarkeit des Codes;
  • Verbesserte Wartbarkeit des Codes;
  • Eine bedarfsgerechte Beladung ist möglich.

Modularität in Node.js

Klassifizierung von Modulen in Node.js

In Node.js werden Module entsprechend ihrer Quelle in drei Kategorien unterteilt:

1. Integrierte Module (integrierte Module werden offiziell von Node.js bereitgestellt, wie z. B. fs, path, http usw.)

2. Benutzerdefinierte Module (jede vom Benutzer erstellte JS-Datei ist ein benutzerdefiniertes Modul)

3. Module von Drittanbietern (von Drittanbietern entwickelte Module, keine offiziell bereitgestellten integrierten Module oder von Benutzern erstellte benutzerdefinierte Module, die vor der Verwendung heruntergeladen werden müssen)

Module laden

Mit der Methode require() können Sie die erforderlichen integrierten Module, benutzerdefinierten Module und Module von Drittanbietern zur Verwendung laden.

//Lade das eingebaute fs-Modul const fs = require('fs')
 
//Benutzerdefiniertes Modul laden const custom = require('./custom.js')
 
//Drittanbietermodule laden const moment = require('moment')

Hinweis : Wenn Sie die Methode require() zum Laden anderer Module verwenden, wird der Code im geladenen Modul ausgeführt

Modulumfang

Ähnlich wie beim Funktionsumfang kann auf Variablen, Methoden und andere Mitglieder, die in einem benutzerdefinierten Modul definiert sind, nur innerhalb des aktuellen Moduls zugegriffen werden. Diese Zugriffsbeschränkung auf Modulebene wird als Modulumfang bezeichnet.

//Datei: 01.custom.js
const username = 'Benutzername' //Konstanten Benutzernamen im Modulbereich definieren
Funktion sagHallo(){
   console.log('Hallo zusammen, ich bin:' + Benutzername) //Definiere die Funktion sayHello im Modulbereich
}
 
//Datei: 02.custom.js
const custom = require('./01.custom') //Datei 01.custom importieren console.log(custom)  
// Ausgabe {} leeres Objekt. Auf private Mitglieder im Modul 01.custom.js kann im Modul 02.custom.js nicht zugegriffen werden

Freigeben von Mitgliedern mit Modulbereich nach außen

Modulobjekt

In jedem benutzerdefinierten JS-Modul gibt es ein Modulobjekt, das Informationen zum aktuellen Modul speichert.

In einem benutzerdefinierten Modul können Sie das Objekt module.exports verwenden, um die Mitglieder innerhalb des Moduls für die externe Verwendung freizugeben. Wenn die Außenwelt die Methode require() verwendet, um ein benutzerdefiniertes Modul zu importieren, wird das Objekt erhalten, auf das module.exports zeigt.

Hinweis: Wenn Sie die Methode require() zum Importieren eines Moduls verwenden, basiert das Ergebnis des Imports immer auf dem Objekt, auf das module.exports zeigt.

Zum Beispiel:

//Datei: 01.custom.js
module.exports.username = 'zs' // Mounten Sie das Attribut username im module.exports-Objekt
module.exports.sayHello = Funktion(){
   console.log('Hallo') //Definieren Sie die Funktion sayHello im Modulbereich
}
module.exports = { // module.exports auf einen neuen Objekt-Spitznamen verweisen lassen: 'Xiao Ming',
   sagHallo(){
     console.log('Hallo!')
   }
}
 
//Datei: 02.custom.js
const custom = require('./01.custom.js') //Datei 01.custom importieren console.log(custom)  
//Ausgabe { nickname:'Xiao Ming', sayHi:[Function:sayHi]}

Exportobjekt

Da das Wort module.exports kompliziert zu schreiben ist, stellt Node das Exportobjekt bereit, um den Code für die externe Freigabe von Mitgliedern zu vereinfachen. Standardmäßig verweisen „Exporte“ und „Modul.Exports“ auf dasselbe Objekt. Das endgültige Freigabeergebnis basiert weiterhin auf dem Objekt, auf das module.exports zeigt.

Missbrauch von Exporten und module.exports

Wenn Sie ein Modul anfordern (), erhalten Sie immer das Objekt, auf das module.exports zeigt. Um Verwirrung zu vermeiden, wird daher empfohlen, sowohl „Exports“ als auch „module.exports“ nicht im selben Modul zu verwenden.

Hinweis: Innerhalb jedes Moduls stellt die Modulvariable das aktuelle Modul dar.

Die Modulvariable ist ein Objekt und ihre Exporteigenschaft (d. h. module.exports) ist die externe Schnittstelle

Beim Laden eines Moduls wird tatsächlich die module.exports-Eigenschaft des Moduls geladen. Zum Laden des Moduls wird die require()-Methode verwendet.

npm und Pakete

Tasche

Drittanbietermodule in Node.js werden auch Pakete genannt. So wie sich „Computer“ und „Rechner“ auf dasselbe beziehen, beziehen sich Module und Pakete von Drittanbietern auf dasselbe Konzept, nur mit unterschiedlichen Namen.

Da die integrierten Module von Node.js nur einige Low-Level-APIs bereitstellen, ist die Effizienz bei der Entwicklung von Projekten auf Basis integrierter Module sehr gering. Das Paket ist basierend auf den integrierten Modulen gekapselt und bietet eine erweiterte und praktischere API, die die Entwicklungseffizienz erheblich verbessert. Die Beziehung zwischen Paketen und integrierten Modulen ähnelt der Beziehung zwischen jQuery und der integrierten API des Browsers.

So laden Sie das Paket herunter

npm, Inc. bietet ein Paketverwaltungstool, mit dem wir die erforderlichen Pakete vom Server https://registry.npmjs.org/ zur lokalen Verwendung herunterladen können. Der Name dieses Paketverwaltungstools lautet Node Package Manager (kurz npm-Paketverwaltungstool). Dieses Paketverwaltungstool wird zusammen mit dem Node.js-Installationspaket auf dem Computer des Benutzers installiert. Sie können den Befehl npm -v im Terminal ausführen, um die Version des auf Ihrem Computer installierten npm-Paketverwaltungstools anzuzeigen.

Öffnen Sie zunächst das Fenster mit dem Logo und der Taste R, geben Sie cmd ein, öffnen Sie das Fenster und geben Sie npm -v ein.

Befehl zum Installieren des Pakets im Projekt

Die von mir verwendete Software ist WebStorm2021. Die folgenden Anweisungen werden alle im Terminal der Software WebStorm2021 ausgeführt.

npm install Der vollständige Name des Pakets (Wenn Sie beim Ausführen des Befehls npm install am Ende den Parameter -g hinzufügen, wird das Paket als globales Paket installiert.)

Nachdem das Paket installiert ist, sehen wir einen Ordner namens node_modules und eine Konfigurationsdatei package-lock.json im Projektordner.

Der Ordner node_modules wird zum Speichern aller im Projekt installierten Pakete verwendet. Wenn require() ein Drittanbieterpaket importiert, sucht und lädt es das Paket aus diesem Verzeichnis. Die Konfigurationsdatei package-lock.json wird verwendet, um die Downloadinformationen jedes Pakets im Verzeichnis node_modules aufzuzeichnen, z. B. Paketname, Versionsnummer, Downloadadresse usw.

Hinweis: Das Installationspaket muss in einer guten Netzwerkumgebung ausgeführt werden.

Installieren Sie eine bestimmte Version des Pakets

Wenn Sie ein Paket mit dem Befehl „npm install“ installieren, wird automatisch die neueste Version des Pakets installiert. Wenn Sie eine bestimmte Version eines Pakets installieren müssen, können Sie das @-Symbol nach dem Paketnamen verwenden, um die spezifische Version anzugeben. Beispiel: npm install [email protected]

Hinweis: Sie können den Befehl npm install (oder npm i) ausführen, um alle abhängigen Pakete auf einmal zu installieren. (Dies geschieht nach dem Entfernen des node_modules-Projekts).

Paket deinstallieren

Der Befehl zum Deinstallieren eines Pakets lautet: npm uninstall der vollständige Name des Pakets

Lösen Sie das Problem der langsamen Download-Geschwindigkeit

Warum ist die Download-Geschwindigkeit langsam?

Wenn Sie npm zum Herunterladen von Paketen verwenden, werden diese standardmäßig vom fremden Server https://registry.npmjs.org/ heruntergeladen. Zu diesem Zeitpunkt muss die Übertragung der Netzwerkdaten über ein langes optisches Unterseekabel erfolgen, sodass die Downloadgeschwindigkeit sehr langsam ist.

Lösung 1 - Taobao NPM Mirror Server

Taobao hat in China einen Server aufgebaut, der speziell dafür ausgelegt ist, Pakete von offiziellen Servern im Ausland mit inländischen Servern zu synchronisieren und dann Paketdownloaddienste in China bereitzustellen. Dadurch wird die Verpackungsgeschwindigkeit erheblich verbessert. (Spiegelung ist eine Form der Dateispeicherung, bei der die Daten auf einer Festplatte als identische Kopie auf einer anderen Festplatte vorhanden sind.)

Lösung 2 - Wechseln Sie die Spiegelquelle des NPM-Pakets

Die Spiegelquelle des Pakets bezieht sich auf die Serveradresse, von der das Paket heruntergeladen wird.

Lösung 3 - nrm

Um die Spiegelquelle des Pakets bequemer zu wechseln, können wir das NRM-Tool installieren. Mit den von NRM bereitgestellten Terminalbefehlen können wir die Spiegelquelle des Pakets schnell anzeigen und wechseln

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Modularisierung in Node.js
  • Detaillierte Erklärung der NodeJS-Modularität
  • Pufferobjekt in Node.js und wie man es erstellt
  • Detaillierte Erläuterung der Verwendung des Pufferobjekts im binären Operationsmodul von node.JS
  • Detaillierte Erläuterung des binären Pufferobjekts von nodeJS
  • Detaillierte Erläuterung des modularen Mechanismus und des Pufferobjekts von Node.js

<<:  Verwenden Sie Prometheus, um den verbleibenden verfügbaren Prozentsatz der MySQL-Autoinkrement-Primärschlüssel zu zählen

>>:  Detailliertes Tutorial zur Installation und Bereitstellung von Nginx Linux

Artikel empfehlen

Schwebendes Menü, kann einen Bildlaufeffekt nach oben und unten erzielen

Der Code kann noch weiter optimiert werden. Aus Z...

Implementierung der Clusterkonstruktion im Docker Redis5.0-Cluster

Systemumgebung: Ubuntu 16.04LTS In diesem Artikel...

Befehle zum Deaktivieren und Aktivieren von MySQL-Fremdschlüsseleinschränkungen

Deaktivieren und Aktivieren von MySQL-Fremdschlüs...

Wie man mit React elegant CSS schreibt

Inhaltsverzeichnis 1. Inline-Stile 2. Importmetho...

Verständnis für Webdesign-Layout

<br />Hier ergibt sich ein Widerspruch: In k...

So steuern Sie die Startreihenfolge von Docker Compose-Diensten

Zusammenfassung Docker-Compose kann problemlos me...

Vue.js-Textfeld mit Dropdown-Komponente

Ein Textfeld mit Dropdown-Liste ermöglicht es Ben...

So ändern Sie das Datenbankdatenspeicherverzeichnis in MySQL

Vorwort Die Standarddatenbankdatei der MySQL-Date...

So bringen Sie Ihren Browser dazu, mit JavaScript zu sprechen

Inhaltsverzeichnis 1. Das einfachste Beispiel 2. ...