Node.js将模块依赖关系分开

时间:2012-06-07 23:09:18

标签: javascript node.js express

将所有模块依赖项分成一个名为 dependencies.js 的新文件,并要求该文件为例如 server.js 的最佳方法是什么? 。我如何归还所有这些要求?

var express = require('express')
  , stylus = require('stylus')
  , fs = require('fs')
  , https = require('https')
  , app = express();

1 个答案:

答案 0 :(得分:1)

您需要将它们分配给global对象,因此根本不应该这样做

global.express = require('express');
global.stylus = require('stylus');
global.fs = require('fs')
global.https = require('https')
global.app = global.express();

实际上有很多理由不这样做,但我会把它煮沸。首先,您知道在模块中声明变量(例如var Foo = require('foo'))时,该变量是该模块的本地范围的一部分。另一方面,global对所有模块都是全局的。考虑一下所有模块共享同一命名空间对于在运行时特定点无法保证处于任何状态的关键事物的影响(global实际上是重置每当节点决定它需要!)。如果您开始使用多个进程(如@Hippo提到但未解释),则此问题可能会加剧。

我可以看出为什么这个似乎一开始就是一个好主意,但是与你隐藏的意外失败相比,你从这种技术中获得的少量DRY相形见绌。你的代码。

IMO,无论如何,明确声明每个模块中的依赖项要好得多。在所有模块中共享deps列表会混淆程序的逻辑结构。