0

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

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

1 回答 1

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 列表会混淆程序的逻辑结构。

于 2012-06-07T23:16:41.557 回答