【问题标题】:Best place to require modules which are only used in closures需要仅在闭包中使用的模块的最佳位置
【发布时间】:2017-05-06 14:31:41
【问题描述】:

如果作为 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.

requireLibrary1 和 Library2 在它们使用的范围内会更好吗?还是像大多数人一样在文件顶部?

这两种方式消耗多少内存有区别吗?

【问题讨论】:

    标签: node.js memory


    【解决方案1】:

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

    当一个模块第一次被加载时,它被加载了阻塞的、同步的 I/O。在服务器运行时使用阻塞、同步 I/O 是不好的,因为这会干扰服务器一次处理多个请求的能力并降低可伸缩性。

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      相关资源
      最近更新 更多