将所有模块依赖项分离到一个名为的新文件中的最佳方法是什么dependencies.js
,例如,需要该文件server.js
。我如何返回所有这些要求?
var express = require('express')
, stylus = require('stylus')
, fs = require('fs')
, https = require('https')
, app = express();
将所有模块依赖项分离到一个名为的新文件中的最佳方法是什么dependencies.js
,例如,需要该文件server.js
。我如何返回所有这些要求?
var express = require('express')
, stylus = require('stylus')
, fs = require('fs')
, https = require('https')
, app = express();
您需要将它们分配给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 列表会混淆程序的逻辑结构。