我想在node.js中创建一个包含两个函数的模块
我还需要一个共同的对象来使用所有的功能。
我尝试了以下语法,但它似乎不起作用:
module.exports = function(obj) {
func1: function(...) {
},
func2: function(...) {
}
}
obj
是我希望函数使用的公共对象。
答案 0 :(得分:3)
您需要返回函数对象:
module.exports = function(obj) {
return {
func1: function(...) {
},
func2: function(...) {
}
};
};
用法:
var commonObj = { foo: 'bar' };
var myModule = require('./my-module')(commonObj);
答案 1 :(得分:1)
module.exports
只是require
调用返回的对象。
你可以:
var commonObj = require('myObj');
module.exports = {
func1: function(commonObj) {...},
func2: function(commonObj) {...}
};
答案 2 :(得分:1)
您正尝试在函数中使用对象语法。因此要么将函数转换为return
函数,要么只使用对象并导出它。要传递一个参数,你需要像init
函数那样的东西。
var obj = {
init: function (name) {
this.name = name;
return this;
},
func1: function () {
console.log('Hallo ' + this.name);
return this;
},
func2: function () {
console.log('Goodbye ' + this.name);
return this;
}
};
module.exports = obj;
然后使用init
方法将其导入另一个文件中。请注意return this
的使用 - 这允许您的方法被链接。
var variable = require('./getVariable'); // David
var obj = require('./testfile').init(variable);
obj.func1(); // Hallo David
obj.func2(); // Goodbye David