javascript - 循环内的导入模块是一种不好的做法?
问题描述
我有一个javascript模块,我在我的主/主代码的开头导入它,并在其中执行一个forEach,在这个主代码中有一个调用模块方法的循环:
results.forEach(function(result) {
for(const item of items .......){
exampleModule.metodo(result, item)
}
});
到目前为止一切顺利,问题是模块的值是混合的,根据结果 X 的项目 Y,模块不是动态的,它有点“扰乱”一切......
想了个办法解决,不知道是不是最佳实践,在一个对象中声明 const exampleModule = require('./modules/example.js') 并给那个对象一个引用,比如item 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 正在使用的模块的值等等,这可能吗?有人可以帮帮我吗?
解决方案
我有同样的想法,检查过一次,但它基本上是一个由 require() 函数返回的单例。
如果你有
jQuery = require('jquery');
jQuery.fn.foobar = function() {
this.css({color:red});
}
然后在另一个文件中你可以做
$ = require('jquery');
$('hello').foobar();
唯一的条件是您使用的字符串require()
是相同的大小写。
require('libs/myModule.js') != require('libs/mymodule.js');
在幕后创建了一张地图:
objects = {
'jquery' : ....
'add' : ....
'strcasecomp' : ....
'/www/htdocs/site/libs/myModule.js' : ...
}
require()
如果对象存在于地图中,会发生什么情况,它会被返回。如果不存在,则查找、实例化、映射并返回相关文件。
推荐阅读
- javascript - 在javascript中与Miss Ms串联全名
- elasticsearch - 过滤文档以匹配嵌套弹性搜索字段中的两个字段中的任何一个
- javascript - 使用 css 或 html5 的位移图
- datatable - 尝试在数据表中显示 8000 条或更多记录时显示错误消息
- networking - 通过同一区域的 2 VPS 的私有 IP 进行通信是否比通过其公共 IP 进行的通信更快?
- angular - 只让 bootstrap css 在一个模块中工作
- spring-boot - 在没有 ServletContext 类型的 bean 的情况下使用 DataJpaTest 进行测试
- ios - 使用背景图片截取屏幕截图 - iOS
- python - python try...除了处理来自用户输入的参数
- javascript - 为什么我不能在我的 JS 计算中添加一个以上的点