根据定义,一个模块最终导出的是module.exports,而exports是对module.exports的全局引用,最初被定义为一个可以添加属性的空对象。
所以导出自己定义的模块,两者在使用上有如下区别:
1. module.exports = myModule
// myModule.js
var MyModule = {};
MyModule.prototype.myFunc = function() {
console.log("Hello World");
};
module.exports = MyModule;
// main.js
var MyModule = require("./myModule");
new MyModule().myFunc();
2. exports = myModule
// myModule.js
var MyModule = {};
MyModule.prototype.myFunc = function() {
console.log("Hello World");
};
exports = MyModule;
// main.js
var MyModule = require("./myModule");
new MyModule().myFunc();
3. module.exports.myModule = myModule 或者 exports.myModule = myModule