目前,我编写了这样的node.js模块:
//MyModule.js
function MyModule() {
...somecode
}
MyModule.prototype.someFunc = function() {...}
module.exports = MyModule
然而,当我需要使用模块时,我必须写下这样的东西:
//main.js
var MyModule = require('MyModule');
var myModule = new MyModule();
这看起来非常丑陋。是不是有办法做这样的事情
//main.js
var myModule = require('MyModule').new();
我做错了吗?
答案 0 :(得分:2)
快速破解不丑的东西
module.js
function MyModule() {
console.dir('constructor');
}
module.exports = MyModule;
app.js
Function.prototype.new = function () {
return new this();
};
var MyModule = require('./module.js').new(); // 'constructor'
答案 1 :(得分:1)
如果您的模块仅由函数组成,则可能不需要将其创建为实例 - 只需将模块定义为充满函数的对象。像这样:
var MyModule = {
prepareHtmlContent: function() {
},
autoLoadActionInitiatorFunctions: function() {
}
};
我建议这样做的原因是你已将对象称为“MyModule”。如果你的意图是专门用它作为“类”,并在需要时实例化它的单独副本,那么你就是按照正确的方式进行的。
答案 2 :(得分:1)
这是我使用的
(function(module) {
module.myFunction = function() {
}
module.createSomeObj = function() {
return {
foo: 1,
bar: 'bar'
};
}
}(module.exports));
用法
var myModule = require('./myModule');
myModule.myFunction();
var myObject = myModule.createSomeObj();