使用Node的最佳实践:传递引用或使用require import?

时间:2017-01-03 09:36:38

标签: node.js performance

我是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读取两次,而第二种方法只读取一次吗?)

1 个答案:

答案 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需要哪个模块。