4 javascript node.js requirejs javascript-import es6-modules
require()在 JavaScript/Node.js 中,每次导入其他模块时是否都会执行相同的文件?
如果是,我如何在一个文件中包含一个数组,并从另一个 JS 文件追加/更新其中的值?例如,我在一个文件中有一个数组,并且我正在从多个文件更新该数组,并且我希望所有文件仅与更新后的数组进行交互。我怎样才能实现这个目标?
模块会被缓存,如果您再次加载它们,则会加载缓存的副本。
https://nodejs.org/api/modules.html#modules_require_cache
当需要时,模块会缓存在该对象中。通过从此对象中删除一个键值,下一个 require 将重新加载模块。这不适用于本机插件,重新加载将导致错误。
添加或替换条目也是可能的。在本机模块之前检查此缓存,如果将与本机模块匹配的名称添加到缓存中,则 require 调用将不再接收本机模块。小心使用!
您可以使用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
Run Code Online (Sandbox Code Playgroud)
相反,您可以从模块中公开一个函数来读取数组值,因此它将始终获取新值。
const myArray = [1];
const get = () => {
return myArray;
};
const update = (data) => {
myArray.push(data);
};
exports.get = get;
exports.update = update;
Run Code Online (Sandbox Code Playgroud)
const myArray = require('./myArray');
console.log(myArray.get()); // [1]
console.log(myArray.update(2)); // update the value
console.log(myArray.get()); // [1,2]
Run Code Online (Sandbox Code Playgroud)
所以现在使用myArray.get()always读取值并使用myArray.update(data)更新。
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |