我要做的就是从模块中导出两个函数。一个函数带有一个参数,另一个不带参数:
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);
导出这样的多个函数的正确方法是什么? 谢谢。
答案 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()