Node.js Nodejs-require(';模块';)和require(';模块';)之间的差异.db?
varNode.js Nodejs-require(';模块';)和require(';模块';)之间的差异.db?,node.js,Node.js,varmydb=require('module')是如何实现的不同于varmydb=require('module').db 更新:使用我观察到的代码和行为进行更新 //module.js exports.doA = function(callback) { db.asyncConnect(/* connect options */, function(err, database) { if(err == null) { exports.db = dat
mydb=require('module')是如何实现的代码>不同于varmydb=require('module').db代码>
更新:使用我观察到的代码和行为进行更新
//module.js
exports.doA = function(callback) {
db.asyncConnect(/* connect options */, function(err, database) {
if(err == null) {
exports.db = database;
}
});
}
exports.db = null;
// test1.js
var mydb = require('module');
console.log(mydb);
// test2.js
var db = require('module').db;
console.log(db);
输出:
MongoDb[对象]
数据库空值
变量db
为空,但是mongodb.db
有值吗?
即使我在一个变量中指定mongodb.db
的值,该值也是空的
// file: test.js
var mongodb = require('./db.js');
var db = require('./db.js').db;
console.log("MongoDb " + mongodb.db);
console.log("DB " + db);
这将获得整个模块
var mydb = require('module');
这将获取模块返回的对象的属性db
后一部分的缺点是,您不能再访问“parent”对象了,即从.db
调用返回的任何内容都将是您得到的内容,而没有其他内容
快速示例:
var mydb = require('module').db;
基本上是不同的
//some_module.js
var SomeModule = {
db: function () {
console.log("hello");
}
};
module.exports = SomeModule;
//some_other_module.js
var SomeModule = require('./some_module.js');
console.log(SomeModule); // [Object object]
var SomeDB = require('./some_module.js').db;
console.log(SomeDB); // function () {}
这意味着您导出的每个对象都将被调用/导入mydb.doA
和mydb.db
可用
var mydb = require('module');
只有db
对象被调用/导入到您的代码中。与第一个示例不同,db
它本身就像第一个示例中的mydb.db
var mydb = require('module');
var db = require('module').db;