2016-07-09 18 views
1

Ich habe eine ziemlich einfache Frage, auf die ich keine Antwort bezüglich des Exports eines Objekts aus einem Modul in Knoten js finden kann, genauer gesagt auf die Objekteigenschaften zugreifen.Knoten js Objekt exportiert

Hier ist mein Ziel Ich exportieren:

exports.caravan = { 
    month: "july" 
}; 

Und hier ist mein Hauptmodul:

var caravan = require("./caravan") 

console.log(caravan.month); 
console.log(caravan.caravan.month); 

Warum kann ich die Eigenschaften direkt mit caravan.month Zugriff haben aber caravan.caravan schreiben .Monat?

+0

* "Wenn es Caravan wäre eine Funktion, könnte ich es einfach mit Caravan() nennen" * - Nein, konnte man nicht. – JJJ

+0

@Juhana Du hast recht, ich könnte nicht, es wäre caravan.caravan(). – MustSeeMelons

Antwort

13

Bedenken Sie, dass mit require, Sie Zugriff auf das module.exports Objekt eines Moduls gewinnen (die exports aliased ist, aber es gibt einige Feinheiten exports zu verwenden das macht mit module.exports eine bessere Wahl).

Taking Code:

exports.caravan = { month: "july" }; 

, die zu diesem ähnlich ist:

module.exports.caravan = { month: "july" }; 

, die zu diesem ähnlich ist:

module.exports = { 
    caravan : { month: "july" } 
}; 

Wenn wir ähnlich "übersetzen" die require, Indem Sie ihn durch den Inhalt von module.exports ersetzen, wird Ihr Code wie folgt aussehen:

var caravan = { 
    caravan : { month: "july" } 
}; 

was erklärt, warum Sie caravan.caravan.month verwenden müssen.

Wenn Sie die zusätzliche Dereferenzierungsebene entfernen möchten, können Sie dies in Ihrem Modul verwenden:

module.exports = { 
    month: "july" 
}; 
4

Wenn Sie über caravan.month erhalten möchten, dann:

module.exports = { 
    month: "july" 
}; 
+0

Versuchen Sie 'module.exports = {/ * ... * /}'. –

2

Wenn Sie das Objekt erhalten möchten, verwenden Sie

module.exports = { 
    caravan = { 
     month: "july" 
    } 
}; 

und dann bekommen dies wie:

var caravan = require("./caravan") 

Sie können auch prüfen:

console.log(caravan.caravan.month); 
+0

Ich bin neu für Schreib-Antworten Stapelüberlauf –