在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块。如将函数作为模块的方法导出:
var printName=function(name){ console.log(name); }; exports.printName=printName;
然后在index.js文件中请求这个模块,使用该模块的方法:
var name=require(‘./name‘); name.printName(xiaomu); //xiaomu
其实module.exports才是模块公开的接口,每个模块都会自动创建一个module对象,对象有一个exports的属性,初始值是个空对象{}。而exports只不过是module.exports的一个辅助工具。请求加载模块时最终返回给调用的是moudle.exports而不是exports。关系:
exports = module.exports = {};
所以exports 和 module.exports 的区别:
1. exports 是指向的 module.exports 的引用;
2.module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {};
3.require() 返回的是 module.exports 而不是 exports;
4.是Module.exports本身不具备任何属性和方法,如果,Module.exports已经具备一些属性和方法,那么exports对象收集来的信息将被忽略。因为Module.exports通过赋值的 方式已经和exports指向的内存不同了。
关于使用场合:如果想把模块作为一个特定的类型就用Module.exports。如果你想你的模块是一个典型的“实例化对象”就用exports。
时间: 2024-10-17 14:31:40