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覆盖,最终输出结果是由后者决定的。