如果文件已经被另一个文件需要,我需要“需要”一个文件吗?
我有3个文件
B要求A.
C要求(B和A)
在这种情况下,C是否需要A? 怀疑是因为B已经要求A,而当C要求B时,它也应该要求A.
所以我只想确定c是否需要明确地要求A。
在相同的情况下,当我明确要求A:
我发现以下错误:
module.js:340 throw err; ^ Error: Cannot find module 'A' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/Users/topi/controller.js:3:13) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17)
为什么这样呢?
在大多数情况下,是的。 每个需要引用另一个模块的模块都需要独立地require()
它。
为什么这样呢?
当你使用:
var a = require('./a');
这将声明为当前模块的局部variables,这些variables都在自己的闭包中进行评估。 这就是为什么模块有exports
允许他们指定他们的“ 公共 ”API。
也可以这样build议,即每个模块都必须列出它的依赖关系,比如依赖于a
和b
。
// c.js var a = require('./a'); var b = require('./b');
但是,您可以使用导出来通过另一个模块传递一个模块 – 例如a
通过b
:
// b.js var a = exports.a = require('./a');
// c.js var b = require('./b'); console.log(ba);
而且,从技术上讲,你也可以附加到global
。 虽然,一般你不应该。 这样做通常被认为是代码味道。
是的,你需要它作为一个人的工作node.js的类系统是不同于其他服务器端或OOP语言。
var a = require('./a'); var b = require('./b');
必须这样做