我可以在node.js中定义一个模块:
的 mymodule.js
exports.bar = "Hello";
exports.foo = function(){
console.log(exports.bar);
}
我可以要求模块:
的 app.js
var baz = require("./mymodule.js");
baz.foo(); //Logs "Hello" in the console
如果我按上述方式调用foo
函数,它会在控制台中记录"Hello"
。但是,foo
正在记录的变量是exports.bar
,而不是baz.bar
。 Node.js是否自动知道切换它们还是exports
对象仍然存在?
答案 0 :(得分:2)
exports
是一个特殊对象,默认情况下包含在JS
应用程序的每个Node.js
文件中。
因此,您在文件中导出的任何内容(在您的情况下为mymodule.js
)都是此对象的属性,当您require
将此模块export
对象分配给需求对象时({在你的情况下{1}}。
当你这样做时
baz
您的var baz = require("./mymodule.js");
变量现在看起来像
baz
当您致电baz = {
bar : "Hello",
foo : () => {
console.log(baz.bar)
}
}
时,您会看到baz.foo()
已打印
答案 1 :(得分:0)
在模块中使用导出时,这将向对象添加属性,并将其用作本地对象(变量)。