Javascript 在节点js中是否需要在运行时更新值?

Javascript 在节点js中是否需要在运行时更新值?,javascript,node.js,require,Javascript,Node.js,Require,我有点像 var some_data=require('../objects/some_data.json'); function(){ //something here to change data of some_data.json - fs.write //vl this affect value of some_data at this point ? } 是否需要保留对文件的活动引用,或者在需要时只读取一次 如果它保持活动引用,我如何保留某些数据的旧值?它保持活动引用。即

我有点像

var some_data=require('../objects/some_data.json');

function(){
  //something here to change data of some_data.json - fs.write 
  //vl this affect value of some_data at this point ?
}
是否需要保留对文件的活动引用,或者在需要时只读取一次


如果它保持活动引用,我如何保留某些数据的旧值?它保持活动引用。即,通过require加载的对象是单例

发件人:

模块在第一次加载后被缓存

多次调用require('foo')可能不会导致多次执行模块代码

假设您有一个名为
deleteme.json
的文件,其中包含以下内容:

{
  "key": "value"
}
让我们尝试要求它,更改它,然后再次要求它:

var data = require('./deleteme.json')
data.key = "newvalue"
data = require('./deleteme.json')
console.log(data)
您将看到它记录了
newvalue
——因为对象没有重新加载,所以原始对象保留在内存中


因为您询问删除文件:您可以删除该文件,因为它在内存中。只有在再次启动节点并首次加载模块时,删除文件才会停止

它加载文件,以及文件启动时的状态。它不接受您对json文件所做的任何更改

例如,运行以下命令

var b = require("./a.json");
for (var i = 0; i< 1000000; i++) {
    console.log(b.a);
}

并在循环中更改值-或删除文件。它仍然可以工作。

我直接加载一个json对象,其中包含一些数据,这是一个好方法吗,你也可以说abt EDIT part吗?@aishwatsingh我添加了一些测试代码,显示你编辑对象来说明这一点。但它与@mikemacana answer相矛盾,根据你的说法,一些数据不会改变,但从他的回答来看,我猜不会,这不是@aishwatsingh@aishwatsingh对文件所做的更改将无效。对同一个必需对象的更改将产生影响。它不会影响某些_数据,我明白了,顺便说一句,谢谢各位
{
  "a": "b"
}