如果作为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会更好吗?或者像大多数人一样在文件的顶部吗?
这对于消耗多少内存有什么影响?
答案 0 :(得分:3)
最好加载服务器启动时所需的所有模块。
首次加载模块时,会加载阻塞的同步I / O.在服务器的运行时期间使用阻塞的同步I / O是很糟糕的,因为这会干扰服务器一次处理多个请求并降低可伸缩性的能力。
加载了require()
的模块被缓存,所以幸运的是,在请求处理程序中间的模块中尝试require()
实际上只会在第一次运行请求时损害性能。
但是,最好在启动代码中加载任何模块,而不是在服务器的运行时请求处理期间。