gpt4 book ai didi

javascript - 在循环内导入模块是一种不好的做法?

转载 作者:行者123 更新时间:2023-11-30 14:02:41 25 4
gpt4 key购买 nike

我有一个 javascript 模块,我在主代码/主代码的开头导入它,并在其中执行一个 forEach,在这个主代码中有一个循环调用模块的方法:

results.forEach(function(result) {
for(const item of items .......){
exampleModule.metodo(result, item)
}
});

到目前为止一切顺利,问题是模块的值是混合的,根据结果 X 的项目 Y,模块不是动态的,它有点“扰乱”一切......

我想了个办法解决,不知道是不是最好的做法,在一个对象中声明const exampleModule = require('./modules/example.js'),然后给那个对象一个引用,这样作为项目 ID,因为每个 ID 都是唯一的:

let objetos = {}
results.forEach(function(result) {
for(const item of items .......){
objetos[item.id] = require('./modules/example.js')
objetos[item.id].metodo(result, item)
}
});

简而言之,我希望每个循环项都创建一个模块的实例而不被干扰,如果我在位置 0 的项目中实例化模块,则模块中的所有内容都应该只被该项目 0 使用,如果它是项目 1 相同的东西,1 n 可以更改位置 0 等正在使用的模块的值,这可能吗?有人可以帮帮我吗?

最佳答案

Node.js 缓存导入的模块。所以在循环中要求它们没有副作用。缓存说明here in docs .

是的,在代码深处导入模块并不是最佳实践,因为它被认为可读性较差。您可以随时执行以下操作:

let objetos = {}
const exampleModule = require('./modules/example.js');
results.forEach(function(result) {
for(const item of items .......){
objetos[item.id] = Object.assign({}, exampleModule);
objetos[item.id].metodo(result, item)
}
});

关于javascript - 在循环内导入模块是一种不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56040822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com