console.log('这是用户自定义模块a')
const name='张三'
function show(){
console.log('显示'+name)
}
//向module.exports对象上挂载属性,暴露出去
module.exports={name,show}
//1,加载用户自定义模块,可以省略.js后缀名。
const a=require('./a.js')
//得到 module.exports 对象
console.log(a) //{ name: '张三', show: [Function: show] }
console.log(a.show())
演示module对象。
//每个.js自定义模块中都有一个module对象,它里面存储了当前模块有关的信息。
console.log(module)
// module.exports和exports是同一个对象
//最终都是module.exports指向的对象
console.log(module.exports)
console.log(exports)
console.log(module.exports==exports) //true
/**
* 打印如下:
* Module {
id: '.',
path: 'E:\\node.js教学\\6,模块化',
exports: {},
parent: null,
filename: 'E:\\node.js教学\\6,模块化\\2,演示module对象.js',
loaded: false,
children: [],
paths: [
'E:\\node.js教学\\6,模块化\\node_modules',
'E:\\node.js教学\\node_modules',
'E:\\node_modules'
]
}
module.exports 对象,可以将模块内的成员共享出去,供外界使用。
外界用require()方法导入自定义模块时,得到的就说module。exports所指的对象
* */
module和module.exports的使用误区。
//时刻谨记,require() 模块时,得到的永远时module.exposts指向的对象
案例一
exports.user='张三'
module.exports={name:'李四' }
结果 {name:'李四'}
实例二
module.exports.user='张三'
exports={name:'李四'}
结果 {user:'李四'}
实例三
exports.username='zs'
module.exports.gender='男'
结果:{username:'zs',gender:'男'}
实例四
exports={ name:'zs',gender:'男'}
module.exports=exports;
module.exports.age=18;
结果:{name:'zs',gender:'男' age:18}