web-dev-qa-db-ja.com

Node jsオブジェクトのエクスポート

Node jsのモジュールからオブジェクトをエクスポートすること、より具体的にはオブジェクトのプロパティにアクセスすることに関する答えを見つけることができない非常に単純な質問を受け取りました。

これが私がエクスポートする私のオブジェクトです:

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

そして、これが私のメインモジュールです:

var caravan = require("./caravan")

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

Caravan.monthでプロパティに直接アクセスできないのに、caravan.caravan.monthと書く必要があるのはなぜですか?

8
MustSeeMelons

requireを使用すると、モジュールのmodule.exportsオブジェクトにアクセスできることを考慮してください(これはexportsにエイリアスされますが、exportsを使用することには微妙な点がいくつかあります。 module.exportsを使用することをお勧めします)。

あなたのコードを取る:

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

これはこれに似ています:

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

これはこれに似ています:

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

同様にrequiremodule.exportsの内容に置き換えることで「変換」すると、コードは次のようになります。

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

これが、caravan.caravan.monthを使用する必要がある理由を説明しています。

余分なレベルの間接参照を削除したい場合は、モジュールでこれを使用できます。

module.exports = {
  month: "july"
};
31
robertklep

caravan.month経由で取得したい場合は、次のようにします。

module.exports = {
    month: "july"
};
7
Arun Ghosh

オブジェクトを取得する場合は、

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

そして、次のように取得します。

var caravan = require("./caravan")

以下を確認することもできます。

console.log(caravan.caravan.month);
1
Ravi Teja