module.exports和exports的区别
在学习Node.js
时,经常能看到两种导出模块的方式:module.exports
和exports
在文件a.js中用exports或module.exports导出的对象(方法、变量),可以在另一个文件b.js中通过require('./a')引用
module
和exports
是Node.js
给每个js文件内置的两个对象。可以通过console.log(module)
和console.log(exports)
打印出来。如果你在main.js中写入下面两行,然后运行$ node main.js
:require
引入的对象本质上是module.exports
。这就产生了一个问题,当 module.exports
和exports
指向的不是同一块内存时,exports
的内容就会失效比如:
module.exports = {name: '叔叔'};
exports = {name: '阿姨'}
此时
module.exports
指向了一块新的内存(该内存的内容为{name: '叔叔'})
,exports
指向了另一块新的内存(该内存的内容为{name: '阿姨'}
)。require
得到的是{name: '叔叔'}
。结果是
引入 let people = require('./people');
console.log(people);//输出:{name: '叔叔'}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!