我不明白为什么只有对象可以很好地导出。看那个:
第一个文件
var a = exports.a = {};
var b = exports.b = 0;
exports.xxxxx = function(){
a.hello = 'help';
b = 104;
};
第二个文件
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)
...
第二个文件:
...
var b = require('firstfile');
...
console.log(b.b); // 104
为什么?
编辑
我想我明白了。
变量 a 仅供参考!我会向不明白的人解释:
- 读取第一个文件时,
a = {}, b = 0
- 当我们更改 b 时,b 已更改,但不是模块(导出)!
- 这是正常的
exports.b = 104
// 我们改变了模块的值!谁是必需的。
现在,为什么对象不同?
- 因为当文件 2 被执行时。(执行一次),a = {} 的值。
- 但它显示 {xxx:xxx}
- 这是因为文件执行时a的值不是{},而是这个对象的引用。
- 因此,当我们需要获取这个对象时,我们会搜索所有引用。
重要的是要记住两件事:
- 函数所需的模块被读取一次!需要在函数中要求查看更改。
- 对象库存参考。
再见!希望这有帮助!