在Node.js中导出新对象

时间:2015-04-24 22:24:47

标签: node.js

如何将变量port,host,database传递给此函数?

// myjs.js

var redisCaller = function(port,host,database){

};

module.exports = new redisCaller();

如果我这样做:

var myjs = require('./myjs');

如何传递这些变量?

似乎唯一的方法就是这样:

module.exports = function(port,host,database){

    return new redisCaller(port,host,database);
}

2 个答案:

答案 0 :(得分:3)

将myjs.js更改为:

module.exports = redisCaller;

然后你可以这样做:

var myjs = require('./myjs')(port,host,database);

答案 1 :(得分:1)

你没有。

您设置该代码的方式使得无法传递变量,除非您调整require。然后,您可能需要了解您在其中使用的任何文件中的端口/主机/数据库。

相反,也许只使用'init'。

例如,app.js -

var redisCaller = require('./myjs');
redisCaller.init(port, host, database);

和myjs ..

var redisCaller = function(){
    this.init = function (port,host,database) {
        this.connection = ...
    }
    this.getConnection = function () {
        if(!this.connection) { throw "Need to run init first"; }
        return this.connection;
    }
};

module.exports = new redisCaller();

您需要连接的任何地方......

var redisCaller = require('./myjs');
var conn = redisCaller.getConnection();

//or 

var redisCaller = require('./myjs').getConnection();

这是一些代码,但至少可以轻松地跨文件重用..假设这是你的意图。