js中模块导入导出(export&import)问题
一、模块系统
【test.js】
exports.hello = function() {
console.log('hello');
}
exports.world = function() {
console.log('world');
}
# 每个node模块都有一个默认的module对象
console.log(module)
# module.exports与exports在内存中指向的是同一个对象
console.log(module.exports)
console.log(exports)
# 验证module.exports与exports是否相等
console.log(exports==module.exports)
console.log(exports===module.exports)
# 注意:其它模块在使用require('./test.js')导入当前模块时,都会在被导入模块的文件末尾添加一行隐藏的return module.exports; 保证其可被导入
# return module.exports;
node test.js
# console.log(module)
Module {
id: '.',
path: '/root',
exports: { world: [Function (anonymous)], hello: [Function (anonymous)] },
filename: '/root/test.js',
loaded: false,
children: [],
paths: [ '/root/node_modules', '/node_modules' ]
}
# console.log(module.exports)
{ world: [Function (anonymous)], hello: [Function (anonymous)] }
# console.log(exports)
{ world: [Function (anonymous)], hello: [Function (anonymous)] }
# console.log(exports==module.exports)
true
# console.log(exports===module.exports)
true
二、规范
三、使用
exports 和 module.exports 的使用
如果要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用 module.exports。
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix