我是Node.js的新手,有人可以解释下面两种方法的优缺点吗?应该使用哪一个?
app.js中的:
var foo = require("./foo");
var foo2 = require("./foo2");
foo.dostuff();
foo2.dostuff();
foo.js& foo2.js:
var needImport = require("./bar");
foo.prototype.dostuff = function()
或
app.js中的:
var needImport = require("./bar");
var foo = new require("./foo")(needImport);
var foo2 = new require("./foo2")(needImport);
foo.dostuff();
foo2.dostuff();
foo.js和foo2.js:
var needImport;
function foo(needImportPassed) {
needImport = needImportPassed
}
foo.prototype.dostuff = function()
问题基本上是要求传递条形模块的引用是否有优势?或者让其他文件每次都请求该特定模块? (bar.js不是持久连接,只是一堆辅助函数,所以bar.js读取两次,而第二种方法只读取一次吗?)
答案 0 :(得分:-1)
我不明白你为什么修改foo原型。你有两个解决方案:
app.js中的
var foo = require('./foo');
var foo2 = require('./foo2');
foo.doStuff();
foo2.doStuff();
在foo2.js和foo.js
中var bar = require('./bar');
module.exports = {
doStuff : () => bar.doOtherStuff()
};
或者
app.js中的
var bar = require('./bar');
var foo = require('./foo')(bar);
var foo2 = require('./foo2')(bar);
foo.doStuff();
foo2.doStuff();
在foo.js和foo2.js
中module.exports = (bar) => ({
doStuff : () => bar.doOtherStuff()
});
您应该使用第一个解决方案,因为它是一种更常见的模式,它允许创建真正的模块化代码。在app.js
中,您不需要知道foo或foo2需要哪个模块。