Node.js模块中的函数

时间:2018-05-03 13:29:06

标签: javascript node.js

我可以在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对象仍然存在?

2 个答案:

答案 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)

在模块中使用导出时,这将向对象添加属性,并将其用作本地对象(变量)。