声明“如果要将导出对象设置为函数或新对象,则必须使用module.exports对象。”
我的问题是为什么。
// right module.exports = function () { console.log("hello world") } // wrong exports = function () { console.log("hello world") }
我console.logged结果(result=require(example.js))和第[Function]一个是{}。
result=require(example.js)
[Function]
{}
module是具有exports属性的普通JavaScript对象。exports是一个普通的JavaScript变量,碰巧设置为module.exports。在文件末尾,node.js基本上将“返回”module.exports该require函数。在Node中查看JS文件的一种简化方法是:
module
exports
module.exports
require
var module = { exports: {} }; var exports = module.exports; // your code return module.exports;
如果在上设置exports,如exports.a=9;,该属性也会设置module.exports.a,因为对象是作为JavaScript中的引用传递的,这意味着如果将多个变量设置为同一对象,则它们都是同一对象;因此,exports和module.exports是相同的对象。 但是,如果你设置exports新的东西,这将不再被设定为module.exports,所以exports并module.exports不再是同一个对象。
exports.a=9;
module.exports.a