Nodejs的exports与module.exports的区别

先建两个文件

  • 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 上

公众号

欢迎大家关注我的公众号: 石马上coding,一起成长
石马上coding

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值