需要仅用于封闭的模块的最佳位置

时间:2017-05-06 14:31:42

标签: node.js memory

如果作为NodeJS文件的一部分,有不同的闭包:

const Library2 = require('Library2'); // should it be here?

doSomething().then(()=>{
    const Library1 = require('Library1'); // or here?
    return Library1.doSomething();
}).then(()=>{
    return Library2.doSomething();
}).then(...) // etc.

在使用它们的范围内{1}} Library1和Library2会更好吗?或者像大多数人一样在文件的顶部吗?

这对于消耗多少内存有什么影响?

1 个答案:

答案 0 :(得分:3)

最好加载服务器启动时所需的所有模块。

首次加载模块时,会加载阻塞的同步I / O.在服务器的运行时期间使用阻塞的同步I / O是很糟糕的,因为这会干扰服务器一次处理多个请求并降低可伸缩性的能力。

加载了require()的模块被缓存,所以幸运的是,在请求处理程序中间的模块中尝试require()实际上只会在第一次运行请求时损害性能。

但是,最好在启动代码中加载任何模块,而不是在服务器的运行时请求处理期间。