nodejs exportiert die Nutzung
Node.js ist eine auf der Chrome V8-Engine basierende Programmiersprache, die die Ausführung von JavaScript auf dem Server ermöglicht. Sie kann Module und Pakete verwenden, um Programme einfach zu organisieren und Abhängigkeiten zu verwalten. Unter diesen sind module.exports
und exports
häufig verwendete Konzepte bei der Modularisierung. In diesem Artikel wird ihre Verwendung in Node.js vorgestellt. module.exports
和exports
是模块化中常用的概念,本文将介绍它们在Node.js中的用法。
module.exports和exports的关系
在Node.js中,每个文件就是一个独立的模块,想要在其它模块中使用该文件内部的变量和函数,需要将其导出。module.exports
和exports
这两个变量都可以进行导出操作。
在Node.js中,每个模块都有一个module
对象,该对象包含了模块的相关信息,其中就有一个exports
属性。exports
将要导出的变量或函数挂载在该属性上,然后通过require()
函数在外部引用该模块并调用其导出的变量和函数。
默认情况下,exports
指向的是module.exports
的引用,所以通过exports
和module.exports
都可以进行模块导出,但是需要注意的是,二者的指向关系不是一直相同的,导致有时候我们需要使用module.exports
而不是exports
。
对比exports和module.exports
当我们使用exports
导出一个对象时,实际上是向exports
添加了一个属性并赋值。例如:
// add.js exports.add = function (a, b) { return a + b; }
上述代码中,我们使用exports
将add()
方法导出。相当于执行了以下代码:
exports.add = function (a, b) { return a + b; } module.exports = exports; // exports被默认指向module.exports
接下来让我们看一个示例:
// math.js exports.add = function (a, b) { return a + b; }; exports.sub = function (a, b) { return a - b; }; // app.js const math = require('./math'); console.log(math.add(1, 1)); // 2 console.log(math.sub(1, 1)); // 0
通过require()
函数引用math
模块并调用其导出的方法,结果正确输出。为什么是正确的呢?
我们知道exports
默认指向module.exports
,而当我们直接将exports
指向一个新的对象时,module.exports
的指向关系就已经被改变了。而Node.js在加载模块时,实际上返回的是module.exports
对象而不是exports
对象,所以将exports
指向一个新的对象后,再将该新对象作为module.exports
的值,才是真正的导出操作。
exports = { add: function (a, b) { return a + b; }, sub: function (a, b) { return a - b; }, } module.exports = exports;
注意:如果只是给exports
的属性重新赋值,并不会改变它和module.exports
之间的指向关系。
例如:
// multiply.js exports = { mul: function (a, b) { return a * b; } } // app.js const multiply = require('./multiply'); console.log(multiply.mul(2, 5)); // TypeError: multiply.mul is not a function
在上述代码中,将exports
指向了一个新的对象,但是没有对其属性进行赋值,所以导出的值为undefined
,所以在调用时会出现TypeError。
exports和module.exports的使用场景
在大多数情况下,我们可以直接使用exports
进行模块导出。但是有时候,我们需要将模块直接导出一个函数或对象,而不是将它们挂载在exports
上,此时就需要使用module.exports
了。
例如:
// foo.js module.exports = function () { console.log('Hello World!') } // app.js const foo = require('./foo'); foo(); // Hello World!
在上述代码中,直接将一个函数赋值给module.exports
module.exports
und exports
exportiert werden. In Node.js verfügt jedes Modul über ein module
-Objekt, das modulbezogene Informationen enthält, einschließlich eines exports
-Attributs. exports
Mounten Sie die zu exportierenden Variablen oder Funktionen auf dieser Eigenschaft, verweisen Sie dann extern über die Funktion require()
auf das Modul und rufen Sie seine exportierten Variablen und Funktionen auf. 🎜🎜Standardmäßig verweist exports
auf einen Verweis auf module.exports
, also über exports
und module.exports
kann Module exportieren, es sollte jedoch beachtet werden, dass die Zeigebeziehung zwischen den beiden nicht immer dieselbe ist, sodass wir manchmal module.exports
anstelle von exports
verwenden müssen. 🎜🎜Vergleichen Sie exports und module.exports🎜🎜Wenn wir exports
verwenden, um ein Objekt zu exportieren, fügen wir tatsächlich ein Attribut zu exports
hinzu und weisen einen Wert zu. Zum Beispiel: 🎜rrreee🎜Im obigen Code verwenden wir exports
, um die Methode add()
zu exportieren. Dies entspricht der Ausführung des folgenden Codes: 🎜rrreee🎜 Schauen wir uns als Nächstes ein Beispiel an: 🎜rrreee🎜 Referenzieren Sie das Modul math
über die Funktion und den Aufruf require()
seine exportierte Methode, Das Ergebnis wird korrekt ausgegeben. Warum ist es richtig? 🎜🎜Wir wissen, dass exports
standardmäßig auf module.exports
verweist, und wenn wir exports
direkt auf ein neues Objekt verweisen, module . Die Zeigebeziehung der Exporte
wurde geändert. Wenn Node.js ein Modul lädt, gibt es tatsächlich das Objekt module.exports
anstelle des Objekts exports
zurück, also verweisen Sie exports
auf ein neues Objekt , und verwenden Sie dann das neue Objekt als Wert von module.exports
, dem eigentlichen Exportvorgang. 🎜rrreee🎜Hinweis: Wenn Sie einfach das Attribut von exports
neu zuweisen, ändert sich dadurch die Verweisbeziehung zwischen ihm und module.exports
nicht. 🎜🎜Zum Beispiel: 🎜rrreee🎜Im obigen Code zeigt exports
auf ein neues Objekt, dessen Eigenschaften jedoch nicht zugewiesen sind, sodass der exportierte Wert undefiniert
ist Beim Aufruf tritt ein TypeError auf. 🎜🎜Verwendungsszenarien von Exports und module.exports🎜🎜In den meisten Fällen können wir exports
direkt zum Exportieren von Modulen verwenden. Aber manchmal müssen wir eine Funktion oder ein Objekt direkt aus dem Modul exportieren, anstatt sie auf exports
zu mounten. In diesem Fall müssen wir module.exports
verwenden. 🎜🎜Zum Beispiel: 🎜rrreee🎜Im obigen Code wird beim direkten Zuweisen einer Funktion zu module.exports
die Funktion tatsächlich als Exportobjekt des gesamten Moduls verwendet. 🎜🎜Summary🎜🎜exports und module.exports sind Variablen, die zum Exportieren von Modulen in Node.js verwendet werden. Sie können sie verwenden, um die Variablen oder Funktionen des Moduls für die externe Verwendung verfügbar zu machen. Beachten Sie, dass exports auf Module verweist Standardmäßig verweist die Beziehung nicht immer auf dasselbe Objekt, daher müssen wir manchmal module.exports anstelle von exports verwenden. Wenn Sie Exporte und module.exports zum Exportieren von Modulen verwenden möchten, können Sie entsprechend der tatsächlichen Situation auswählen. 🎜Das obige ist der detaillierte Inhalt vonnodejs exportiert die Nutzung. 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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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





React kombiniert JSX und HTML, um die Benutzererfahrung zu verbessern. 1) JSX bettet HTML ein, um die Entwicklung intuitiver zu gestalten. 2) Der virtuelle DOM -Mechanismus optimiert die Leistung und reduziert den DOM -Betrieb. 3) Komponentenbasierte Verwaltungs-Benutzeroberfläche zur Verbesserung der Wartbarkeit. 4) Staatsmanagement und Ereignisverarbeitung verbessern die Interaktivität.

React -Komponenten können durch Funktionen oder Klassen definiert werden, wobei die UI -Logik eingefasst und Eingabedaten durch Props akzeptiert werden. 1) Komponenten definieren: Verwenden Sie Funktionen oder Klassen, um Reaktierungselemente zurückzugeben. 2) Rendering -Komponente: React -Aufrufe rendern Methode oder führt die Funktionskomponente aus. 3) Multiplexing -Komponenten: Daten durch Requisiten übergeben, um eine komplexe Benutzeroberfläche zu erstellen. Mit dem Lebenszyklusansatz von Komponenten kann die Logik in verschiedenen Phasen ausgeführt werden, wodurch die Entwicklungseffizienz und die Wartbarkeit des Codes verbessert werden.

Das Reaktivitätssystem von VUE 2 kämpft mit der Einstellung der Direktarray -Index, der Längenänderung und der Addition/Löschung der Objekteigenschaften. Entwickler können die Mutationsmethoden von VUE und VUE.SET () verwenden, um die Reaktivität sicherzustellen.

React ist das bevorzugte Werkzeug zum Aufbau interaktiver Front-End-Erlebnisse. 1) React vereinfacht die UI -Entwicklung durch Komponentierungen und virtuelles DOM. 2) Komponenten werden in Funktionskomponenten und Klassenkomponenten unterteilt. Funktionskomponenten sind einfacher und Klassenkomponenten bieten mehr Lebenszyklusmethoden. 3) Das Arbeitsprinzip von React beruht auf virtuellen DOM- und Versöhnungsalgorithmus, um die Leistung zu verbessern. 4) State Management verwendet Usestate oder diese. 5) Die grundlegende Verwendung umfasst das Erstellen von Komponenten und das Verwalten von Status, und die erweiterte Verwendung umfasst benutzerdefinierte Haken und Leistungsoptimierung. 6) Zu den häufigen Fehlern gehören unsachgemäße Statusaktualisierungen und Leistungsprobleme, Debugging -Fähigkeiten umfassen die Verwendung von ReactDevtools und exzellent

TypeScript verbessert die Reaktionsentwicklung, indem sie die Sicherheit Typ, Verbesserung der Codequalität und eine bessere Unterstützung für eine IDE bietet, wodurch Fehler verringert und die Wartbarkeit verbessert werden.

In dem Artikel wird der Usereducer für komplexes Zustandsmanagement in React erläutert, wobei die Vorteile gegenüber Usestate detailliert beschrieben werden und wie sie in die Nutzung für Nebenwirkungen integriert werden können.

Funktionelle Komponenten in vue.js sind zustandslos, leicht und fehlen Lebenszyklushaken, die ideal für die Rendern von reinen Daten und zur Optimierung der Leistung. Sie unterscheiden

In dem Artikel werden Strategien und Tools erörtert, um sicherzustellen, dass React -Komponenten zugänglich sind und sich auf semantische HTML, ARIA -Attribute, Tastaturnavigation und Farbkontrast konzentrieren. Es empfiehlt die Verwendung von Tools wie Eslint-Plugin-JSX-A11Y und AXE-CORE für Testi
