<h4>exports 和 module.exports 都是用来导出代码,但是二者有什么区别呢?</h4>
- 每一个node.js执行文件,都自动创建一个module对象
- module对象会创建一个叫exports的属性
- module.exports 初始值为一个空对象 {}
- exports是引用 module.exports的值
- module.exports 被改变的时候,exports不会被改变
- require() 返回的是 module.exports 而不是 exports
- 模块导出的时候,真正导出的执行是module.exports,而不是exports
<h5>用事实说话:</h5>
建立两个文件,test1.js和test2.js,
test1.js代码:
exports.a = function(){
console.log('hello world')
};
exports.a = 'test';
test2.js代码:
var x = require('./test1');
console.log(x.a);
运行test2.js,结果截图:
结论:
exports是引用 module.exports的值。module.exports 被改变的时候,exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports.
test3.js代码:
exports.a = function(){
console.log('hello')
};
module.exports = {a: 'world'};
exports.a = 'test';
test4.js代码:
var x = require('./test3');
console.log(x.a)
运行test4.js,结果截图:
结论:
exports在module.exports 被改变后,失效。