我的项目自己写了一个模块是先创建一个连接,然后通过这个连接执行很多函数, 如果我的其他模块引用了这个模块那是每个引用都新创建一个连接吗,还是这些模块都共用一个连接呢?? 就像下面创建了client连接,如果其他模块require了util,那他们是共用一个client连接吗?
var thirdpartmodule = require(‘thirdpartmodule’); var util = new Object(); var connstr = ‘XXX’; var client = thirdpartmodule.createClient(connstr); client.connect();
function a(){client.geta() … }
function b(){client.getb()…}
function c(){client.getc()…}
util.a = a; util.b = b; util.c = c;
module.exports = util
Node require函数会对模块进行缓存,准确的说是执行一遍js代码后缓存module.exports的内容,因此你不必担心,多次require也只会创建一次长连接
额,js命门可以由数字开头的吗? var 3rdpartmodule = require(‘3rdpartmodule’);
如果是require 内实现的长连接;不是拿出来 new 之后初始化的那么就是一个;require 其实知会执行一次;其他的会都会走缓存; 不在外面初始化去连接,那么就只有一个实例 你是调用后在外面用new 创建方式或者函数直接创建的连接就会有多个实例了
你的模块看起来比较适合,单例的模式;
@hyj1991 谢谢!
@bajian 例子没细检查,谢谢指出,已经改正。
@slclub 很详细 谢谢,学习了
@thesadboy 例子写的匆忙,细节还需注意,谢谢