如果我有这个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对象?我很困惑为什么它返回导出对象(问候语函数)而不是真正的导出对象本身。
答案 0 :(得分:1)
require(...)
从该模块返回module.exports
。这通常是一个对象,但它也可以是其他任何东西(通常是函数),就像模块只导出一个函数一样。
执行此操作没有任何问题 - module.exports
只是一个普通的对象(代码中的某些地方很可能像module.exports = {};
那样在模块的js文件的内容周围运行)