从module.exports

时间:2017-08-16 17:49:40

标签: javascript node.js function

我正在努力用JavaScript重构一些代码,这是一种我不太熟悉的语言,所以我遇到了一些问题,我正在理解我面临的一些错误。

原始代码,运行正常,采用以下格式:

function doSomething(website){
//logic
}

function doSomethingElse(value){
   doSomething(value);
}

但是,我必须将所有现有代码放在模块导出语句中,因为我需要将它与其他服务集成。所以现在代码看起来有点像:

module.exports = class DoAllThings{
  doSomething(website){
  //logic
  }

  doSomethingElse(value){
   doSomething(value);
  }
}

然而这不起作用,因为它说doSomething不是一个功能。我已经尝试将函数设置为var并以这种方式访问​​它,并通过.this访问:

 this.doSomething(value); 

无济于事。

我已将模块导出定义为类,因此我可以在另一个文件中执行此操作:

 let accessVar = new DoAllThings(); 
 accessVar.doSomethingElse(value);

还有其他“类”我必须按照模式进行整合。那么有谁知道我将如何访问这些功能?我认为这与我回归的方式有关,但我不太确定。

1 个答案:

答案 0 :(得分:0)

一种方法:

//I am kinda private, can't be accesed from outside
function doSomethingElse() {
  console.log('something else');
}
module.exports = {
  doSomething: function() {
    doSomethingElse();
  }
}

...

const yourModule = require('yourModule');
yourModule.doSomething() //console.log

另:

const doSomethingElse = function() {
  console.log('something else')
}
const doSomething = function() {
  doSomethingElse();
}

module.exports = {doSomething}

//or
module.exports = {doSomething, doSomethingElse}

上课:

module.exports = class Y {
  doSomething() {
    this.doSomethingElse();
  }

  doSomethingElse() {
    console.log('something else');
  }
}