javascript - 在nodejs中通过带有构造函数的模块公开多个对象
问题描述
我在 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";
}
};
使用该模块
app.js
const service = require('./service').service;
const STORE_STYLE = require('./service').STORE_TYPE;
推荐阅读
- angularjs - Angular 1.6 - 控制器已注册但仍未检测到
- dialogflow-es - 如何从 Dialogflow 中的先前上下文将参数附加到现有参数列表?
- python - Python,嵌套字典元素链接
- python - 即使在丢失和批量标准化之后,keras 中的 CNN 也会过拟合
- bash - echo 以非常不同的方式工作
- c# - 如何排列来自多个 json 文件但格式不同的相似数据?
- angularjs - 通过竹子构建调用package.json中的npm脚本触发构建
- android - 如果 json 包含空字符串,则 FCM 推送通知不会到达
- vue.js - Vue.js 一些错误/警告很难调试
- java - 如何在 GET 请求中传递邮递员列表并进入 GetMapping