使用参数导出多个函数

时间:2019-07-19 08:21:51

标签: javascript node.js node-modules

我要做的就是从模块中导出两个函数。一个函数带有一个参数,另一个不带参数:

function initClass(params)
{
   return new Promise( (resolve, reject) => {
        if (!wallet) {
            wallet = new WalletClient(params);
            resolve(wallet);
        } else {
            console.log('Wallet is initialized');
            resolve(wallet);
        }
});
}

function getInstance()
{
   return wallet;
}

仅对于initClass(params),我可以这样做:

module.exports = (params) => {
   initClass(params)
}

然后我将其称为:

var init = require('./class.js')(params).initClass(params);

这很好。

现在,对于我来说,也要导出getInstance(),我尝试执行以下操作,但它似乎不起作用。

module.exports = (params) => {
   initClass(params),
   getInstance
}

这抱怨没有功能getInstance

然后我尝试了这个:

module.exports.init = (params) => {
   initClass(params)
}

module.exports.instance = {
   getInstance
}

然后将其称为:

var init = require('./class.js').init(params).initClass(params);

导出这样的多个函数的正确方法是什么? 谢谢。

3 个答案:

答案 0 :(得分:1)

如果我正确地理解了您正在尝试导出多个方法(如果是这种情况的话),请使用此方法。

   module.exports = {
        method: function() {},
        otherMethod: function(parmas) {}
    }

在您的代码中像这样使用。

 var init = require('./class.js');
    init.method()
    init.otherMethond(paramObj)

如果要在以下情况下使用,则需要查看有关方法链接的信息。

var init = require('./class.js').init(params).initClass(params);

答案 1 :(得分:1)

您正在使它变得比所需的更为复杂。定义函数后,可以使用以下命令将其导出:

module.exports = {
  initClass,
  getInstance
}

要使用它,请执行以下操作:

const init = require("./class.js");
init.initClass(params);
const instance = init.getInstance();

您要从模块中导出的是一个包含两个函数的对象(在上面的示例中,我将其命名为init)。您require时不必将参数传递给函数。

答案 2 :(得分:1)

module.exports本质上是带有键的对象,这些键可以引用文件的任何变量/函数。在您的情况下,

module.exports.initClass = function (params){
...
}

module.exports.getInstance = function (){
}

导入时

var init = require('./class.') // init object has two keys -> initClass and getInstance
 init.initClass('abc')
 init.getInstance()