我的app.js
包含:
var m1 = require("./m1");
m1.f1(...);
我的m1.js
包含:
var m1 = module.exports = {};
m1.f1 = function(...) { };
我想从somevariable
加载m1
时传递app.js
:
var m1 = require("./m1")(somevariable);
如何撰写m1.js
以便m1.f1
的功能定义可以访问somevariable
?
答案 0 :(得分:1)
如果您希望能够这样做:
var m1 = require("./m1")(somevariable); // it is equivalent to var m = require("./m1"); and then m(someVariable); so m (the exports of the module m1.js) should be a function
然后 m1.js 中的module.exports
应该是一个函数:
// m1.js:
module.exports = function(theVariable) {
// use variable then return the following object:
return {
f1: function() { /* ... */ }
};
}
现在您可以使用 app.js 中的模块,如下所示:
// app.js:
var m1 = require("./m1")(someVariable);
m1.f1(/* ... */);
module.exports
是加载模块时调用require
将返回的值。
答案 1 :(得分:0)
// app.js
require("./m1")(somevar);
// m1.js
module.exports = function(param) {
return "something";
}

答案 2 :(得分:0)
如果要将m1作为函数调用,Ibrahim的上述答案是有意义的。但是,在我看来,使用JS类可以更好地满足您的用例。
这样,您就可以导入' m1'使用require('m1')
的常规方式,然后使用new m1(<whatever you want to pass in>);
现在,当您想要拨打M1时,只需使用m1.f1()
为了支持课程,您的M1应该类似于:
export default class m1 {
constructor(param1, param2) {
this.param1 = param1;
this.param2 = param2;
}
f1() {
do whatever with params here
}
}
这样做的最大好处是可读性。现在,当某人(或您)查看您的代码时,他们将看到此输入的来源。否则,很难找到参数来自哪里。特别是当你的代码变得更复杂时。