module.require(…)。*是否返回module.exports。*的一个副本或者它的引用?

在下面的代码中,session.js和user.js中的“db”variables引用了db.js中的同一个对象,还是它们的副本(与我的db服务器build立了单独的连接)?

// db.js var mongojs = require('mongojs'); var db = mongojs('test', ['users', 'sessions']); module.exports.database = db; // session.js var db = require('../db.js').database; ...... // user.js var db = require('../db.js').database; ...... 

谢谢!

每次调用require('../db.js')返回相同的对象,所以在您的情况下,只会创build一个database连接池。

请注意, database实际上是一个连接池(默认为5),可以在您的代码中自由共享,所以这可能是您想要的。

看到这里的文档。

所需的模块被caching,所以它们都将指向同一个对象。 相关的Node.js文档: 模块caching文档 。