Take your future into your own hands. Make it happen Life is a coloring book, but you have the pens. —— Sophie Kinsella, My Not So Perfect Life
先建两个文件
-
index.js -
util.js
在util.js 写一些内容
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
在index.js引入util.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add)
执行node index.js看到结果
如果在index.js给util加属性会得到什么结果呢?
-
index.js 加属性
// index.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add);
util.additional = 'test' // 加这一句
-
util.js 加setTimeout
// util.js
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
setTimeout(() => {
console.log('exports',exports);
}, 2000)
-
结果说明加成功了
那如果用module.exports呢?
-
util.js
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
module.exports = function minus (a,b) {
return a - b;
}
-
index.js
// index.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add);
util.additional = 'test'
-
再运行node index.js这个时候第二个console打印出来的不是一个对象了,而是module.exports导出的一个minus方法,说明修改module.exports 会覆盖整个exports
再把setTimeout加上呢?
-
util.js
exports.hello = 'www';
exports.add = function (a,v) {
return a + v;
}
exports.obj = {ww:33};
module.exports = function minus (a,b) {
return a - b;
}
setTimeout(() => {
console.log('exports',exports);
console.log('module.exports', module.exports);
}, 2000)
-
打印结果
说明exports和module.exports是不同的对象,但是外部文件require的时候,有module.exports就不会引用exports的,在index.js里additional挂在了exports上,而不是module.exports 上
结论
-
exports和module.exports是不同的对象 -
修改module.exports 会覆盖整个exports -
在外部require文件,有exports和module.exports的时候,给这个文件加属性是加在module.exports 上
将未来握于自己手中,去实现自己的梦想。生活是一本涂色书,而彩笔就在你手里。—— Sophie Kinsella, My Not So Perfect Life
文章评论