在我的应用程序中,我以这种方式共享配置变量:
const config = require('./config')
和config.js是一个单独的文件:
module.exports = {
option1: value1,
option2: value2
};
如果我动态更改config
对象中的属性,
它是否会影响其他模块?
例如:
module.exports = { foo: 'bar' }
var config = require('./config');
module.exports.sayFoo = function () {
console.log(config.foo);
}
var config = require('./config');
var app1 = require('./app1');
config.foo = 'baz';
app1.sayFoo();
# node app2.js =====> ??
答案 0 :(得分:1)
写入。我自己也会看到它。
我测试了两个案例:
1)您可以动态更改所需模块的属性吗?
2)你能动态改变出口的模块吗?
module.exports = { foo: 'bar' }
var config = require('./config');
var app2 = require('./app2');
config.foo = 'baz'; // change required module attribute
app2.sayFoo();
console.log(app2.haveFoo);
var config = require('./config');
module.exports.sayFoo = function () {
console.log(config.foo);
module.exports.haveFoo = true; //dynamic export
}
结果
# node app1.js
baz
true
这两种情况都有效。
答案 1 :(得分:0)
require 会缓存响应,所以如果你两次调用同一个东西,它将使用缓存版本。
然而,thkang是对的。只要运行它,你就会亲眼看到它。