Nodejs的exports与module.exports的区别

2022年7月10日 207点热度 0人点赞 0条评论

图片



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

- END -
你知道Object 和Map的区别吗?
React的memo、useCallback、useMemo的区别
useEffect 与 useLayoutEffect 和 useMutationEffect 的区别
你知道JS模板字面量标签函数吗?
React实现模拟浏览器搜索当前页面关键字
如何在浏览器打开pdf文件隐藏头部菜单栏?
JS 实现Excel文件导出
React怎么实现拖拽,网格布局?
了解一下Websocket
Chrome浏览器如何临时解决跨域
如何搭建flutter环境(Mac版)
flutter 如何生成图片并保存到手机相册?
手把手教你如何发布系统和GitHub的oAuth登录
EventLoop面试必考,你完全会了么?

图片
图片
扫码关注
图片
图片
图片
你点的每个赞,我都认真当成了喜欢
49270Nodejs的exports与module.exports的区别

这个人很懒,什么都没留下

文章评论