在nodejs中,requre是请求一个模块,在前面我们已经使用过,比如下面这样:
var http = require("http");
var fs = require('fs');
var url = require('url');
就是使用了各种模块,关于用法我们都知道了,但是怎么自己编写一个nodejs的模块呢?
通过创建js文件的方法,然后以固定的格式输出。
比如我们在同目录下创建一个name.js,代码如下:
//定义一个变量
var name='zhengyong';
//定义一个函数
function getAge()
{
console.log('18');
}
//导出
module.exports.name = name;
module.exports.getAge = getAge;
然后这个就是我们编写的name模块了,那么怎么使用它呢?
我们请求的时候,可以去掉js后缀,也可以加上,比如:
require('name')或
require('name.js')
但这样会报错,因为nodejs中它找的是node_modules下的模块,所以我们可以创建一个node_modules文件夹,将name.js放进去,这样调用就正常了。
或者你可以加上./表明是当前目录,如下:
require('./name');
那么我们的完整调用代码就是,建立test.js如下:
var person=require('./name');
console.log(person.name+':');
person.getAge();
然后node test.js
OK,正常调用。
编写模块我们用到了 module.exports,exports是一个对象,我们用require请求后得到的就是这个对象,所以我们在模块中要对外实现什么,就通过exports输出。
而module也是一个对象,除了exports,它还有这个模块的其它属性,比如模块路径,模块id之类的,这里就不详细介绍了。
我们将name.js更改一下,如下代码运行:
//定义一个变量
var name='zhengyong';
//定义一个函数
function getAge()
{
console.log(typeof module.exports);
console.log(typeof module);
console.log(module);
}
//导出
module.exports.name = name;
module.exports.getAge = getAge;
可以看到它们都是对象:
知道了exports是个对象,我们也可以采用javascript中的大括号创建对象的写法,name.js
如下:
module.exports={
name:'zhengyong',
getAge: function(){
console.log('18')
}
}
效果是一样的。