Node.js学习笔记(一)module.exports与exports

在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。

 

posted @ 2016-11-17 01:37  张小木  阅读(658)  评论(0编辑  收藏  举报