nodejs中的exports与module.exports

可以通过 exports 或者 module.exports 对外暴露对象,但如果同时操作了它们,在 require() 一个模块时,得到的永远是其 module.exports 指向的对象

新建文件 C:\Users\28624\Desktop\node-test.js

添加内容 console.log(module)

C:\Users\28624\Desktop>node node-test.js
Module {
  '9': [Function: internalRequire],
  id: '.',
  path: 'C:\\Users\\28624\\Desktop',
  exports: {}, // 对外暴露的对象
  filename: 'C:\\Users\\28624\\Desktop\\node-test.js',
  loaded: false,
  children: [],
  paths: [
    'C:\\Users\\28624\\Desktop\\node_modules',
    'C:\\Users\\28624\\node_modules',
    'C:\\Users\\node_modules',
    'C:\\node_modules'
  ]
}

Nodejs 遵循了 CommonJS 模块化规范,CommonJS 规定了模块的特性和各模块之间如何相互依赖:

① 每个模块内部,module 变量代表当前模块

② module 变量是一个对象,它的 exports 属性(即 module.exports)是对外的接口

③ 加载某个模块时,其实是加载该模块的 module.exports 属性,require() 方法用于加载模块


不建议将 exports 与 module.exports 混合使用,举例1:

exports.username = 'boming'
...
module.exports = {
  gender : 'male',
  age : 20
}

对外暴露的对象是 {gender:'male',age:20}


举例2:

module.exports.username = 'boming'
...
exports = {
  gender : 'male',
  age : 20
}

对外暴露的对象是 {username :'boming'}


举例3:

exports.username = 'boming'
...
module.exports.gender = 'male'

对外暴露的对象是 {username :'boming',gender:'male'}


举例4:

exports = {
  username: 'boming',
  gender: 'male'
}
...
module.exports = exports
module.exports.age = 20

对外暴露的对象是 {username :'boming',gender:'male',age:20}

posted @ 2025-08-07 19:39  鹿鹿脖子长  阅读(12)  评论(0)    收藏  举报