导出是从module.exports返回的对象

时间:2016-02-10 00:05:30

标签: javascript node.js

如果我有这个hello.js文件:

var greeting = function() {
    console.log('Hello');
}

module.exports = greeting;

然后在main.js:

var temp = require('./hello.js');
temp();

当您说module.exports = greeting是将greeting函数附加到模块上的exports对象时。因为我在hello.js中需要main.js时,我可以直接调用temp()。而且不必像temp.greeting();

这是否意味着,因为require returns module.exports它只是在exports对象上返回方法而不是完全正确地返回exports对象?我很困惑为什么它返回导出对象(问候语函数)而不是真正的导出对象本身。

1 个答案:

答案 0 :(得分:1)

require(...)从该模块返回module.exports。这通常是一个对象,但它也可以是其他任何东西(通常是函数),就像模块只导出一个函数一样。

执行此操作没有任何问题 - module.exports只是一个普通的对象(代码中的某些地方很可能像module.exports = {};那样在模块的js文件的内容周围运行)