js中模块导入导出(export&import)问题

一、模块系统

js中模块导入导出(export&import)问题

两分钟搞定module.exports与exports区别

【test.js】

exports.hello = function() {
    console.log('hello');
}

exports.world = function() {
    console.log('world');
}
# 每个node模块都有一个默认的module对象
console.log(module)

# module.exportsexports在内存中指向的是同一个对象
console.log(module.exports)
console.log(exports)

# 验证module.exportsexports是否相等
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

img

二、规范

简要理解CommonJS规范与ES6的模块规范

CommonJS规范

ES6 Module 的语法

三、使用

exports 和 module.exports 的使用
如果要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用 module.exports。

posted @     阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示