Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将连接对象传递给模块还是在模块内部连接更好?_Javascript_Performance_Node.js - Fatal编程技术网

Javascript 将连接对象传递给模块还是在模块内部连接更好?

Javascript 将连接对象传递给模块还是在模块内部连接更好?,javascript,performance,node.js,Javascript,Performance,Node.js,最好在模块外部定义redis,并在需要时传入,还是在myModule内部的某个地方定义它?将它作为一个参数传递会导致某种不必要的压力吗?或者这两种方法是相同的吗 关于这一点,是否有最佳实践 我正在编写一个API,它意外地接收到大量请求,我试图了解哪些类型的事情会导致不必要的处理。我认为如果您正在创建redis客户端的实例,那么您最好共享该实例,而不是每次创建一个新实例。否则,每次都会有创建新连接的开销 但是,在您的示例中,您只需要该模块,并且由于该模块缓存在第一个require上,因此如果您只需

最好在模块外部定义
redis
,并在需要时传入,还是在
myModule
内部的某个地方定义它?将它作为一个参数传递会导致某种不必要的压力吗?或者这两种方法是相同的吗

关于这一点,是否有最佳实践


我正在编写一个API,它意外地接收到大量请求,我试图了解哪些类型的事情会导致不必要的处理。

我认为如果您正在创建redis客户端的实例,那么您最好共享该实例,而不是每次创建一个新实例。否则,每次都会有创建新连接的开销

但是,在您的示例中,您只需要该模块,并且由于该模块缓存在第一个require上,因此如果您只需要在myModule和passby-reference中输入一次,或者在每个模块中单独需要它,则差别不大


对于这个特定的例子,根据过去的经验,我将在一个单独的模块中创建一个redis客户端,将访问该客户端的所有逻辑放在该模块中的函数中,并从myModule调用这些函数。这就是您的数据库逻辑与应用程序有一定程度的分离。这样,如果数据库发生更改,您只需更改访问Redis的模块中的函数,而不必更改许多不同文件中的代码。

如果
my_module
是唯一一个使用Redis的模块,那么让它自己设置并处理连接对我来说更有意义

如果有多个模块需要访问Redis,我可能会为它创建一个单独的模块,其他模块可以
需要它

var redis = require('redis');
var http = require('http');
var myModule = require('./my_module');
var server = http.createServer(function (req, res) {
  myModule.something_that_uses_redis(req, redis, function(data) {
    res.end(data);
  });
});