尝试在Node中创建多个工厂。它们必须在单独的文件中吗?如果是这样,我如何确保同时访问两者?
index.js
var myFunc = function () {
this.data = {
thingOne: null,
thingTwo: null,
thingThree: null
};
this.fill = function (info) {
for (var prop in this.data) {
if (this.data[prop] !== 'undefined') {
this.data[prop] = info[prop];
}
}
};
this.triggerAction = function () {
//make some action happen!
};
module.exports = function (info) {
var instance = new myFunc();
instance.fill(info);
return instance;
};
当我在下面添加另一个函数时,它会用一个对象破坏现有代码[object Object]没有方法'triggerAction:'
var myFunc2 = function () {
this.data = {
thingOne: null,
thingTwo: null,
thingThree: null
};
this.fill = function (info) {
for (var prop in this.data) {
if (this.data[prop] !== 'undefined') {
this.data[prop] = info[prop];
}
}
};
this.triggerAction2 = function () {
//make some action happen!
};
};
module.exports = function (info) {
var instance = new myFunc2();
instance.fill(info);
return instance;
};
那么我是否必须将第二个功能放在单独的文件中?如果这样做,如何修改package.json以确保它可以看到第二个文件?谢谢!
最佳答案
最简洁的答案是不。
您看到的错误是由于覆盖了模块的exports属性的值引起的-有效地将第一个分配替换为最后一个分配。
如果要将它们放在同一模块中,则需要分别导出它们:
module.exports.factoryA = function(...) {...}
module.exports.factoryB = function(...) {...}
要从另一个模块引用这些,可以使用以下两种模式之一:
var factories = require('./myfactories');
var factoryAResult = factories.factoryA(...);
var factoryBResult = factories.factoryB(...);
要么
var factoryA = require('./myfactories').factoryA;
var factoryAResult = factoryA(...);
关于javascript - Node 中有多个工厂?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24025218/