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}

浙公网安备 33010602011771号