nodejs----模块module学习

在nodejs中一个文件就是一个模块。nodejs提供了exports和require两个对象,其中exports是模块公开的接口,require用于从外部获取一个模块的接口,即所获取模块的exports对象。

演示示例:

新建一个module.js文件,代码如下:

var name;
exports.setName = function(thyname){
    name=thyname;
}
exports.sayHello = function(){
    console.log('Hello '+name);
}

 

同一目录下,新建一个getmodule.js文件,代码如下:

var myModule = require('./module');
myModule.setName('Joy');
myModule.sayHello();

 

运行示例:在安装了nodejs环境下,打开cmd命令窗口,进入代码文件所在文件夹,运行node getmodule.js。结果如下:

 

以上示例中,module.js通过exports对象把setName和sayHello作为模块的访问接口,在getmodule.js中通过require('./module')加载这个模块,然后就可以直接访问module.js中exports对象的成员函数了。npm提供的上万个模块都是通过这种简单的方式搭建起来的。

 

单次加载

require不会重复加载模块,也就是说无论调用多少次require,获得的模块都是同一个。

我们在getmodule.js的基础上作修改如下:

var hello1 = require('./module');
hello1.setName('Joy');

var hello2 = require('./module');
hello2.setName('Joy2');

hello1.sayHello();

运行结果:

运行后发现输出结果是hello Joy2,这是因为hello1和hello2指向的是同一个实例,因此hello1.setName的结果被hello2.setName覆盖,最终输出结果是由后者决定的。

posted @ 2014-04-29 14:10  Joy Ho  阅读(859)  评论(0编辑  收藏  举报