javascript/nodejs中的require每次在另一个模块中导入时都会执行相同的文件吗



JavaScript/Node.js中的require()每次导入其他模块时都会执行相同的文件吗?

如果是,我如何在一个文件中有一个数组,并从另一个JS文件中附加/更新其中的值?例如,我在一个文件中有一个数组,我正在从多个文件更新数组,我希望所有文件只与更新后的数组交互。我怎样才能做到这一点?

模块被缓存,如果您再次加载它们,则会加载缓存副本。

https://nodejs.org/api/modules.html#modules_require_cache

模块在需要时会缓存在此对象中。通过删除该对象中的一个键值,下一个需求将重新加载模块。这不适用于本机插件,因为它将导致重新加载出现错误。

也可以添加或替换条目。已检查此缓存在本机模块之前,如果添加了与本机模块匹配的名称对于缓存,不需要调用来接收本机模块不再小心使用!

您可以使用https://www.npmjs.com/package/clear-module

const clearModule = require('clear-module');
const myArray = clearModule('./myArray'); // but you need load this everytime to get fresh copy of that array

相反,您可以从模块中公开一个函数来读取数组值,因此它将始终获取一个新值。

myArray.js

const myArray = [1];
const get = () => {
return myArray;
};
const update = (data) => {
myArray.push(data);
};
exports.get = get;
exports.update = update;

index.js

const myArray = require('./myArray');
console.log(myArray.get()); // [1]
console.log(myArray.update(2)); // update the value
console.log(myArray.get()); // [1,2]

因此,现在使用myArray.get()始终读取值,并使用myArray.update(data)更新。

相关内容

  • 没有找到相关文章

最新更新