使用require()会对性能产生影响吗?

时间:2015-09-15 12:37:38

标签: node.js dependency-management

当node.js中需要一个模块两次时,它会返回相同的对象,因为require()会缓存之前的调用。

第二个要求的速度有多快?连续使用require()是否会导致性能瓶颈?

所以我想说我有一个这样的模块:

var util = require("util");

module.exports = function (param, logger) {
var module = {};

module.toString = function() {
    return util.format("My nicely formatted text");
}

return module;

};

toString()将被多次调用。如果我省略了util变量中的util模块的保存并且每次都需要它,会发生什么,如下所示:

return require("util").format("My nicely formatted text");

这会让我的应用程序变慢吗?

1 个答案:

答案 0 :(得分:2)

require()的调用进行了缓存,因此两者之间不应存在很大差异。但是,我建议您在文件顶部加载所有模块。你的应用程序的启动会稍微慢一点,但它不应该产生很大的差异,而且它更具可读性。

此外,对require()的调用是阻塞的,因此在处理它们时,Node不会运行任何其他操作。这就是为什么你应该把所有需求放在最上面的另一个原因,所以你最终不会阻止你的应用程序。