Javascript 在nodejs中通过带构造函数的模块公开多个对象

Javascript 在nodejs中通过带构造函数的模块公开多个对象,javascript,node.js,dependency-injection,node-modules,Javascript,Node.js,Dependency Injection,Node Modules,我在nodejs中创建了一个模块,我希望在其中公开它的常量。但这个特定模块包含一个在构建时提供的依赖项,即依赖项注入 这是模块1 const STORE_TYPE = { STORE1: 1, STORE2: 2 }; function service(dependency1) { this.dep = dependency1; } service.prototype.doSomething = function(param1, store) { if (STORE_TYPE

我在nodejs中创建了一个模块,我希望在其中公开它的常量。但这个特定模块包含一个在构建时提供的依赖项,即依赖项注入

这是模块1

const STORE_TYPE = {
  STORE1: 1,
  STORE2: 2
};

function service(dependency1) {
  this.dep = dependency1;
}

service.prototype.doSomething = function(param1, store) {
  if (STORE_TYPE.STORE1 == store) {
    return this.dep.get(param1);
  } else {
    return "something";
  }
};

module.exports = service;
我在这里使用模块1:

var dep = require('./dep');
var dep1 = new otherService(dep);
var service = require('./service')(dep1);

function getData() {
  return service.doSomething(id, /*this is module1 constant*/1);
}
如果module1有构造函数,我如何引用module1的常量

我不希望只为创建服务添加单独的方法,因为被调用方需要执行多个步骤。

请尝试以下操作:

service.js

exports.STORE_TYPE = {
  STORE1: 1,
  STORE2: 2
};

exports.service = function service(dependency1) {
  this.dep = dependency1;
}

service.prototype.doSomething = function(param1, store) {
  if (STORE_TYPE.STORE1 == store) {
    return this.dep.get(param1);
  } else {
    return "something";
  }
};
const service = require('./service').service;

const STORE_STYLE = require('./service').STORE_TYPE;
使用该模块

app.js

exports.STORE_TYPE = {
  STORE1: 1,
  STORE2: 2
};

exports.service = function service(dependency1) {
  this.dep = dependency1;
}

service.prototype.doSomething = function(param1, store) {
  if (STORE_TYPE.STORE1 == store) {
    return this.dep.get(param1);
  } else {
    return "something";
  }
};
const service = require('./service').service;

const STORE_STYLE = require('./service').STORE_TYPE;
试试这个:

service.js

exports.STORE_TYPE = {
  STORE1: 1,
  STORE2: 2
};

exports.service = function service(dependency1) {
  this.dep = dependency1;
}

service.prototype.doSomething = function(param1, store) {
  if (STORE_TYPE.STORE1 == store) {
    return this.dep.get(param1);
  } else {
    return "something";
  }
};
const service = require('./service').service;

const STORE_STYLE = require('./service').STORE_TYPE;
使用该模块

app.js

exports.STORE_TYPE = {
  STORE1: 1,
  STORE2: 2
};

exports.service = function service(dependency1) {
  this.dep = dependency1;
}

service.prototype.doSomething = function(param1, store) {
  if (STORE_TYPE.STORE1 == store) {
    return this.dep.get(param1);
  } else {
    return "something";
  }
};
const service = require('./service').service;

const STORE_STYLE = require('./service').STORE_TYPE;