你如何在node.js中需要一个文件?例如。 api.js:
var api = require(./api.js);
这样做的最佳做法是什么?
答案 0 :(得分:9)
你完全可以做到。例如,尝试这个(在名为a.js
的文件中):
exports.foo = 'foo';
var a = require('./a');
console.log(a);
exports.bar = 'bar';
console.log(a);
在require
执行时,它将返回a
运行的require
模块,因此将定义字段foo
,但不会bar
。
虽然这样做没有意义。您使用require
将当前范围内的对象(即模块)放入当前范围。 但您无需执行此操作即可访问您当前所在的模块:它已完全可用。
上面的代码有效,因为Node有处理cyclic dependencies的规则。在这里,你有一个循环依赖于自身的模块。 Node没有进入无限循环的需求,而是require
返回模块,使其成为该点:部分模块。并且循环依赖中的模块必须设计为处理它们可能获得部分模块的事实。
应尽可能避免循环依赖。大多数情况下,这意味着通过将功能移动到一个或多个新模块中来重构模块以避免相互依赖。
所以,最好的做法是首先不要这样做。