Hier sind 2 Dateien:
// main.js
require('./modules');
console.log(name); // prints "foobar"
// module.js
name = "foobar";
Wenn ich kein "var" habe, funktioniert es. Aber wenn ich habe:
// module.js
var name = "foobar";
Name wird in main.js undefiniert sein.
Ich habe gehört, dass globale Variablen schlecht sind und Sie besser "var" vor den Referenzen verwenden. Aber ist dies ein Fall, in dem globale Variablen gut sind?
javascript
node.js
global-variables
Never_had_a_name
quelle
quelle
exports
Objekt teilen .global.foo = 'bar'
und dann Zugangfoo
überall Sie mögen ... aber wie gesagt in meiner ursprünglichen Antwort, die ist fast nie eine gute Sache.Ich kann kein Szenario finden, in dem ein Global
var
die beste Option ist. Natürlich können Sie eines haben, aber sehen Sie sich diese Beispiele an und finden Sie möglicherweise einen besseren Weg, um dasselbe zu erreichen:Szenario 1: Legen Sie das Material in Konfigurationsdateien ab
Sie benötigen einen Wert, der für die gesamte Anwendung gleich ist, der sich jedoch je nach Umgebung (Produktion, Entwicklung oder Test) ändert, beispielsweise als Mailer-Typ, den Sie benötigen:
und
(Machen Sie eine ähnliche Konfiguration auch für Entwickler)
Um zu entscheiden, welche Konfiguration geladen wird, erstellen Sie eine Hauptkonfigurationsdatei (diese wird in der gesamten Anwendung verwendet).
Und jetzt können Sie die Daten wie folgt erhalten:
Szenario 2: Verwenden Sie eine Konstantendatei
Und benutze es so
Szenario 3: Verwenden Sie eine Hilfsfunktion, um die Daten abzurufen / einzustellen
Kein großer Fan von diesem, aber zumindest können Sie die Verwendung des 'Namens' (unter Berufung auf das Beispiel des OP) verfolgen und Validierungen einrichten.
Und benutze es
Es kann einen Anwendungsfall geben, wenn es keine andere Lösung als eine globale
var
gibt. Normalerweise können Sie die Daten in Ihrer App jedoch mithilfe eines dieser Szenarien freigeben, wenn Sie beginnen, node.js (wie ich es vor einiger Zeit getan habe) zu verwenden um die Art und Weise zu organisieren, wie Sie mit den Daten dort umgehen, da sie sehr schnell unordentlich werden können.quelle
Wenn wir mehrere Variablen gemeinsam nutzen müssen, verwenden Sie das folgende Format
Verwendung
quelle
Speichern Sie alle Variablen, die gemeinsam genutzt werden sollen, als ein Objekt. Übergeben Sie es dann an das geladene Modul, damit es über die Objektreferenz auf die Variable zugreifen kann.
Auf der anderen Datei ..
quelle
Eine Variable, die mit oder ohne das Schlüsselwort var deklariert wurde, wurde an das globale Objekt angehängt. Dies ist die Grundlage für die Erstellung globaler Variablen in Node, indem Variablen ohne das Schlüsselwort var deklariert werden. Während Variablen, die mit dem Schlüsselwort var deklariert wurden, für ein Modul lokal bleiben.
Weitere Informationen finden Sie in diesem Artikel - https://www.hacksparrow.com/global-variables-in-node-js.html
quelle
Mit einer anderen Meinung denke ich, dass die
global
Variablen die beste Wahl sein könnten, wenn Sie Ihren Codenpm
veröffentlichen möchten, da Sie nicht sicher sein können, dass alle Pakete dieselbe Version Ihres Codes verwenden. Wenn Sie also eine Datei zum Exportieren einessingleton
Objekts verwenden, treten hier Probleme auf.Sie können oder andere Objekte auswählen
global
,require.main
die für mehrere Dateien freigegeben sind.Bitte sagen Sie mir, ob es bessere Lösungen gibt.
quelle