首页 > 代码库 > nodejs学习(模块的简单了解)
nodejs学习(模块的简单了解)
1.模块
模块(Module)是nodejs最重要的支柱,开发一个具有一定规范的程序不可能只用一个文件,
通常我们需要把各个功能拆分,封装,然后在组合在一起,模块正是为了现在这种方式而诞
生的。在浏览器的javascript中,脚本模块的拆分和组合通常情况下我们都使用Html的
Script标签来实现,但是nodejs给我们提供了require这个函数来调用其他的模块。
-----------------------------------------------------------------------
模块是nodejs基本组成的部分,但是文件和模块都是对应的,简单来说nodejs的文件就是一个模块,但是这个文件可能是Javascript代码,Json或者是编译过的C/C++的扩展。
比如:
var http=require(‘http‘);
其中http即是nodejs的一个模块,而我们用require函数来调用nodejs(http)这个模块。
-----------------------------------------------------------------------
要创建一个模块就要知道nodejs的两个函数
1(exports)exports是模块公开的接口,来写一个公开的方法
2(require)require是用于从外部获取一个模块的接口,就可以获取模块exports公开的方法
一个创建nodejs模块的例子:
//ExportsModule.js
var name; exports.setName=function(TName) { name=TName; }; exports.sayHello=function() { console.log(‘hello‘+name); };
然后在同一个目录下面在创建一个GetModule.js
//GetModule.js
var myModule=require(‘./module‘); myModule.setName(‘Yandi‘); myModule.sayHello();
可想而知输出的结果就是(helloYandi);
上面的这个案例Exports.js通过exports对象把setName和sayHello作为模块的访问接口,然后我们在GetModule.js中通过require来加载ExportsModule.js这个模块,然后在
GetModule.js中就可以直接访问Exports公开的接口了。
之前的案例类似于创建对象,但和对象又有本质上的区别,因为require不会被重复加载,无论我们调用几次require,获得的都是同一个模块。
我们在之前的GetModule.js稍作修改
var hello1=require(‘./ExeportsModule.js‘); hello1.setName("One"); var hello2=require(‘./ExeportsModule.js‘); hello2.setName("Two"); hello1.sayHello();
结果很明显 输出的Two
因为hello1和hello2指向的都是同一个实例,因次hello1被hello2给覆盖了,所以输出的结果是根据后者决定的。