在多个地方需要模块和创build对象

var express = require('express'); var app = express(); 

这个问题是用express模块​​的例子,但是这可能是你需要模块的任何模块,并使用构造函数。

所以通用代码是

 var M = require('M'); var myM = M(); 

我的问题是在我的代码(在路由器文件中)我在许多文件中使用上述2行。

所以

  1. 这是使用模块的正确方法吗?是否每个模块都需要和构造(通过构造函数)在一个地方,然后在整个代码中使用构造的对象?
  2. 使用模块的副作用,如我已经使用(额外的RAM使用,延迟..)?

1) 这是使用模块的正确方法吗?

这有两个部分:

  • 是否每个模块require()其他模块,即使多个模块具有相同的依赖关系?

    是。 这是NodeJS的常态。 (进一步解释#2。)

    而且,随着本地import / export可用,它将继续成为常态。

  • 那么他们应该build造吗?

    这取决于个人模块,以及是否公开构造函数/工厂/等。 你必须参考模块自己的文档。

    但是,有一个build设者/工厂/等。 是超出规范的例外。 模块的默认导出只是一个对象,通常会附带一些方法。 大多数核心模块都遵循这种forms。


2)使用模块的副作用像我用过的一样

再一次,两部分:

  • require()不应该有额外的消耗。 每个文件被评估后,它的module.exports 被caching ,所以后面的要求将只是从caching给予相同的值。

  • 但是,工厂/构造函数可能会创build更多的对象,并在每次使用时消耗更多的内存。


特快专递:

  • 在多个文件中require('express')定义应用程序的不同部分,特别是通过express.Router s可能是有用的。 这可以帮助您组织您的应用程序。

  • 如果要将应用程序定义为一系列子应用程序或定义多个应用程序以同时运行,则只需要多次调用工厂函数。