


Lernen Sie Nodejs von mir (3) --- Node.js module_javascript-Kenntnisse
Einführung und Informationen
Über die offizielle API von Node.js können Sie sehen, dass Node.js selbst viele Kernmodule bereitstellt http://nodejs.org/api/ Diese Kernmodule werden in Binärdateien kompiliert und können erfordern('Modulname ') Holen Sie es sich; das Kernmodul hat die höchste Ladepriorität (dies wird angezeigt, wenn es ein Modul mit demselben Namen wie das Kernmodul gibt)
(Dieses Mal spreche ich hauptsächlich über benutzerdefinierte Module)
Node.js verfügt auch über einen Modultyp namens Dateimodul, bei dem es sich um eine JavaScript-Codedatei (.js als Dateisuffix), eine Textdatei im JSON-Format (.json als Dateisuffix) oder eine bearbeitete Datei handeln kann C/C-Datei (.node als Dateisuffix);
Die Zugriffsmethode für Dateimodule erfolgt über require('/filename.suffix') require('./filename.suffix') requrie('../filename.suffix') für den Zugriff. Das Dateisuffix kann weggelassen werden. mit Beginnend mit „/“ bedeutet das Laden mit einem absoluten Pfad, beginnend mit „./“ und beginnend mit „../“ bedeutet das Laden mit einem relativen Pfad, und beginnend mit „./“ bedeutet das Laden von Dateien im selben Verzeichnis,Wie bereits erwähnt, kann das Dateisuffix „Nodejs“ weggelassen werden Erstellen Sie ein benutzerdefiniertes Modul
Nehmen Sie als Beispiel eine Theke
/* Setze den Ausgabewert*/
function seOutputVal (val) {
outputVal = val;
}
/* Setze das Inkrement */
function setIncrement(incrementVal){
increment = incrementVal;
}
/* output*/
function printNextCount()
{
outputVal = increment;
console. log(outputVal) ;
}
function printOutputVal() {
console.log(outputVal);
}
exports.seOutputVal = seOutputVal;
exports.setIncrement = setIncrement;
module.exports.printNextCount = printNextCount;
Benutzerdefinierter Modul-Beispielquellcode
Zwei wichtige Objekte:
require dient dazu, das Modul von außen zu erhalten
exports dient dazu, die Modulschnittstelle verfügbar zu machen
*/
var counter = require('./1_modules_custom_counter');
console.log('Erster Aufruf des Moduls [1_modules_custom_counter]');
counter.seOutputVal(10); //Zählung ab 10 festlegen
counter.setIncrement (10);
counter.printNextCount ();
counter.printNextCount();
counter.printNextCount();
counter.printNextCount();
/*
erfordern den mehrmaligen Aufruf desselben Moduls. Wird nicht wiederholt geladen
*/
var counter = require('./1_modules_custom_counter');
console.log('Zweiter Aufruf des Moduls [1_modules_custom_counter]');
counter.printNextCount( );
Custom Modus, der den Quellcode aufruft
Beim Ausführen können Sie feststellen, dass auf alle über exports und module.exports verfügbar gemachten Methoden zugegriffen werden kann!
Wie Sie im Beispiel sehen können, habe ich das Modul zweimal über require('./1_modules_custom_counter') erhalten, aber die Methode printNextCount() startete nach der zweiten Referenz bei 60~~~
Der Grund dafür ist, dass, wenn node.js dasselbe Modul mehrmals über requirerequire aufruft, es nicht wiederholt geladen wird. Node.js speichert alle geladenen Dateimodule basierend auf dem Dateinamen zwischen, sodass es nicht neu geladen wird
Hinweis: Das Caching nach Dateinamen bezieht sich auf den tatsächlichen Dateinamen und es wird nicht als eine andere Datei betrachtet, nur weil die eingehende Pfadform anders ist
In der von mir erstellten Datei 1_modules_custom_counter gibt es eine printOutputVal()-Methode, die keine externen öffentlichen Zugriffsmethoden über Exporte oder module.exports bereitstellt,
Was passiert, wenn direkt auf die Datei 1_modules_load zugegriffen und diese ausgeführt wird?
Die Antwort lautet: TypeError: Object #
Der Unterschied zwischen Exports und module.exports
Nach dem obigen Beispiel kann über die öffentlichen Methoden exports und module.exports darauf zugegriffen werden! Da also beide den Effekt erzielen können, muss es einige Unterschiede geben ~~~ Nehmen wir ein Beispiel!
var counter = 0;
exporte .printNextCount = function (){
counter = 2;
console.log(counter);
}
var isEq = (exports === module.exports);
console.log (isEq) ;
2_modules_diff_exports.js Datei-Quellcode
Lassen Sie uns eine neue 2_modules_diff_exports_load.js-Datei erstellen und sie nennen
var Counter = require('./2_modules_diff_exports ');
Counter.printNextCount();
Nach dem Aufruf ist das Ausführungsergebnis wie oben gezeigt
Ich gebe den Wert von isEq in der Datei 2_modules_diff_exports_load.js aus ( var isEq = (exports === module.exports); ) und das zurückgegebene true
PS: Beachten Sie, dass es drei Gleichheitszeichen gibt. Wenn Sie sich nicht sicher sind, überprüfen Sie die Informationen bitte selbst!
Ziehen Sie keine voreiligen Schlüsse, sondern ändern Sie diese beiden JS-Dateien in die entsprechenden Codes von module.exports
//Der geänderte Quellcode von 2_modules_diff_exports.js ist wie folgt
var counter = 0;
module.exports = function(){
counter = 10;
this.printNextCount = function()
{
console.log( counter);
}
}
var isEq = (exports === module.exports);
console.log(isEq);
//Die geänderte Dateiquelle 2_modules_diff_exports_load.js Code ist wie folgt
var Counter = require('./2_modules_diff_exports');
var counterObj = new Counter();
counterObj.printNextCount();
Nach dem Aufruf ist das Ausführungsergebnis wie oben gezeigt
Ich habe den Wert von isEq in der Datei 2_modules_diff_exports_load.js ausgegeben ( var isEq = (exports === module.exports); ) und false zurückgegeben, was mit den zuvor erhaltenen Ergebnissen nicht übereinstimmt!
PS: Verwenden Sie für den Zugriff nicht Counter.printNextCount(); Sie erhalten nur eine Fehlermeldung
API bietet Erklärung
http://nodejs.org/api/modules.html
Beachten Sie, dass es sich bei exports um einen Verweis auf module.exports handelt, sodass es nur für die Erweiterung geeignet ist. Wenn Sie ein einzelnes Element, z. B. einen Konstruktor, exportieren, sollten Sie stattdessen module.exports direkt verwenden.
exports ist nur module.exports eine Adressreferenz. Nodejs exportiert nur den Punkt von module.exports. Wenn sich der Exportzeiger ändert, bedeutet dies, dass exports nicht mehr auf module.exports zeigt und daher nicht mehr exportiert wird
Beziehen Sie sich auf andere Vereinbarungen:
http://www.hacksparrow.com/node-js-exports-vs-module-exports.html
http://zihua.li/2012/03/use-module-exports-or-exports-in-node/
module.exports ist die eigentliche Schnittstelle und exports ist nur ein Hilfstool dafür. Was letztendlich an den Aufruf zurückgegeben wird, ist module.exports anstelle von exports.
Alle durch Exporte gesammelten Attribute und Methoden werden Module.exports zugewiesen. Dafür gibt es natürlich eine Voraussetzung, dass module.exports selbst keine Eigenschaften und Methoden hat.
Wenn module.exports bereits über einige Eigenschaften und Methoden verfügt, werden die von exports gesammelten Informationen ignoriert.
Exporte und module.exports decken ab
Das Obige versteht im Grunde auch die Beziehung und den Unterschied zwischen Exports und module.exports, aber was ist das Ergebnis, wenn Exports und module.exports gleichzeitig für die printNextCount()-Methode vorhanden sind?
Anrufergebnis
Aus den Ergebnissen geht hervor, dass kein Fehler gemeldet wird, was darauf hinweist, dass er auf diese Weise definiert werden kann, aber am Ende überschreibt module.exports exports
Obwohl das Ergebnis keinen Fehler meldet, kommt es bei dieser Verwendung zwangsläufig zu Problemen während der Entwicklung, also
1. Es ist am besten, module.exports und exports nicht separat zu definieren
2. NodeJs-Entwickler empfehlen die Verwendung von module.exports zum Exportieren von Objekten und exports
zum Exportieren mehrerer Methoden und Variablen.Andere...
Da die API noch andere Methoden bereitstellt, werde ich nicht näher darauf eingehen. Basierend auf dem obigen Beispiel werden Sie es selbst erkennen, sobald Sie es ausgeben
modul.id
Gibt die Modulkennung vom Typ String zurück, normalerweise den vollständig analysierten Dateinamen
module.filename
Gibt einen vollständig analysierten Dateinamen vom Zeichenfolgentyp
zurückModul.geladen
Gibt einen Bool-Typ zurück, der angibt, ob der Ladevorgang abgeschlossen ist
module.parent
Gibt das Modul zurück, das auf dieses Modul verweist
module.children
Gibt ein Array aller Modulobjekte zurück, auf die dieses Modul verweist

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
![WLAN-Erweiterungsmodul ist gestoppt [Fix]](https://img.php.cn/upload/article/000/465/014/170832352052603.gif?x-oss-process=image/resize,m_fill,h_207,w_330)
Wenn es ein Problem mit dem WLAN-Erweiterungsmodul Ihres Windows-Computers gibt, kann dies dazu führen, dass Sie nicht mehr mit dem Internet verbunden sind. Diese Situation ist oft frustrierend, aber glücklicherweise enthält dieser Artikel einige einfache Vorschläge, die Ihnen helfen können, dieses Problem zu lösen und Ihre drahtlose Verbindung wieder ordnungsgemäß funktionieren zu lassen. Behebung, dass das WLAN-Erweiterbarkeitsmodul nicht mehr funktioniert Wenn das WLAN-Erweiterbarkeitsmodul auf Ihrem Windows-Computer nicht mehr funktioniert, befolgen Sie diese Vorschläge, um das Problem zu beheben: Führen Sie die Netzwerk- und Internet-Fehlerbehebung aus, um drahtlose Netzwerkverbindungen zu deaktivieren und wieder zu aktivieren. Starten Sie den WLAN-Autokonfigurationsdienst neu. Ändern Sie die Energieoptionen. Ändern Erweiterte Energieeinstellungen Netzwerkadaptertreiber neu installieren Einige Netzwerkbefehle ausführen Schauen wir uns das nun im Detail an

In diesem Artikel werden Methoden zur Behebung des Ereignisses ID10000 beschrieben, das darauf hinweist, dass das WLAN-Erweiterungsmodul nicht gestartet werden kann. Dieser Fehler kann im Ereignisprotokoll des Windows 11/10-PCs erscheinen. Das WLAN-Erweiterbarkeitsmodul ist eine Komponente von Windows, die es unabhängigen Hardwareanbietern (IHVs) und unabhängigen Softwareanbietern (ISVs) ermöglicht, Benutzern angepasste Features und Funktionen für drahtlose Netzwerke bereitzustellen. Es erweitert die Funktionalität nativer Windows-Netzwerkkomponenten durch Hinzufügen von Windows-Standardfunktionen. Das WLAN-Erweiterungsmodul wird im Rahmen der Initialisierung gestartet, wenn das Betriebssystem Netzwerkkomponenten lädt. Wenn beim WLAN-Erweiterungsmodul ein Problem auftritt und es nicht gestartet werden kann, wird möglicherweise eine Fehlermeldung im Protokoll der Ereignisanzeige angezeigt.

Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Speichers und Garbage Collectors (GC) der NodeJS V8-Engine. Ich hoffe, er wird Ihnen hilfreich sein!

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

1. Einführung in das SYS-Modul Das zuvor vorgestellte OS-Modul ist hauptsächlich für das Betriebssystem gedacht, während das SYS-Modul in diesem Artikel hauptsächlich für den Python-Interpreter gedacht ist. Das sys-Modul ist ein Modul, das mit Python geliefert wird. Es ist eine Schnittstelle für die Interaktion mit dem Python-Interpreter. Das sys-Modul bietet viele Funktionen und Variablen für den Umgang mit verschiedenen Teilen der Python-Laufzeitumgebung. 2. Häufig verwendete Methoden des sys-Moduls Sie können mithilfe der dir()-Methode überprüfen, welche Methoden im sys-Modul enthalten sind: import sys print(dir(sys))1.sys.argv – Rufen Sie die Befehlszeilenparameter sys ab. argv wird verwendet, um den Befehl von außerhalb des Programms zu implementieren. Dem Programm werden Parameter übergeben und es kann die Befehlszeilenparameterspalte abrufen

Vorwort In diesem Artikel wird weiterhin das Python-Sammlungsmodul vorgestellt. Dieses Mal werden hauptsächlich die darin enthaltenen benannten Tupel vorgestellt, dh die Verwendung von benannten Tupeln. Fangen wir ohne Umschweife an – denken Sie daran, „Gefällt mir“, „Folgen“ und „Weiterleiten“ zu markieren. Sie können überall dort verwendet werden, wo reguläre Tupel verwendet werden, und bieten die Möglichkeit, auf Felder über den Namen statt über den Positionsindex zuzugreifen. Es stammt aus den in Python integrierten Modulsammlungen. Die verwendete allgemeine Syntax lautet: Sammlungen importieren XxNamedT

Die Ereignisschleife ist ein grundlegender Bestandteil von Node.js und ermöglicht die asynchrone Programmierung, indem sie sicherstellt, dass der Hauptthread nicht blockiert wird. Das Verständnis der Ereignisschleife ist für die Erstellung effizienter Anwendungen von entscheidender Bedeutung. Der folgende Artikel wird Ihnen ein detailliertes Verständnis der Ereignisschleife in Node vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!
