当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");
这会让我的应用程序变慢吗?
答案 0 :(得分:2)
对require()
的调用进行了缓存,因此两者之间不应存在很大差异。但是,我建议您在文件顶部加载所有模块。你的应用程序的启动会稍微慢一点,但它不应该产生很大的差异,而且它更具可读性。
此外,对require()
的调用是阻塞的,因此在处理它们时,Node不会运行任何其他操作。这就是为什么你应该把所有需求放在最上面的另一个原因,所以你最终不会阻止你的应用程序。