オブジェクトだけがうまくエクスポートされる理由がわかりません。あれ見て:
最初のファイル
var a = exports.a = {};
var b = exports.b = 0;
exports.xxxxx = function(){
a.hello = 'help';
b = 104;
};
2番目のファイル
var a = require('firstfile').a;
var b = require('firstfile').b;
module.exports = function(){
console.log(a); // {hello:'help'}
console.log(b); // 0
};
なんで ?
エクスポートbのソリューションは次のようになります。
最初のファイル:
...
a.hello = 'help';
exports.b = 104; // (add exports)
...
2番目のファイル:
...
var b = require('firstfile');
...
console.log(b.b); // 104
なんで?
編集
わかったと思います。
変数aは単なる参照です!私は理解していない人に説明します:
- 最初のファイルが読み取られると、
a = {}, b = 0
- bを変更すると、bは変更されますが、モジュール(エクスポート)は変更されません!!
exports.b = 104
//これでモジュールの値を変更するのは正常です!誰が必要です。
さて、なぜオブジェクトが違うのですか?
- ファイル2が実行されるとき。(1回実行)、a={}の値。
- しかし、それは{xxx:xxx}を表示します
- これは、ファイルが実行されたときのaの値が{}ではなく、このオブジェクトの参照であるためです。
- したがって、このオブジェクトを取得する必要がある場合は、すべての参照を検索します。
2つのことを覚えておくことが重要です。
- 関数から必要なモジュールは一度読み取られます!変更を確認するには、関数で要求する必要があります。
- オブジェクトの在庫参照。
さよなら!この助けを願っています!