[TOC]
Node.js模块系统
为了让Node的文件可以相互调用,Node提供了一个简单的模块系统
模块是Node应用程序的基本组成部分,文件和模块是一一对应的,一个Node文件就是一个模块,这个文件可能是js文件,也可能是json文件等
1.创建模块
一个Node js文件就是一个模块,所以我们创建一个modules1.js 的文件就是创建了一个模块。若要提供当前模块给另外模块使用,我们需要将文件导出
// 第一种:
exports.a=function(){
console.log('这是我的第一个模块');
}
exports.b=function(){
console.log(2);
}
exports.c=Math.PI;
exports.d={
un:123,
pw:234,
sayHi:function(){
console.log('qwer');
}
}
以上实例中,modules1.js通过exports对象把a,b,c,d作为模块的访问接口;
我们也可以使用另外一种方式创建导出模块:
// 第二种:
class A{
constructor(name,age){
this.name=name;
this.age=age;
}
sayHi(){
console.log('我叫'+this.name+',我今年'+this.age);
}
}
class B extends A{
constructor(name,age,klass){
super(name,age);
this.klass=klass;
}
sayHi(){
super.sayHi();
console.log('我是的'+this.klass+'学生');
}
}
module.exports={Person:A,Student:B};
// module.exports={A,B};
// module.exports=A;
// module.exports=function(){}
新建一个模块modules3.js,并且给module.exports赋值(赋值的类型可以是变量或对象或函数)的形式,同时导出模块中的class A和class B;使用这种方式也可以导出单个函数或类,均以赋值的形式使用。
相较于第一种方式唯一的变化是使用module.exports=xx代替了exports.xx=function(){};我们推荐大家使用第二种方式,它可以隐藏原有成员变量或成员函数的名称,统一导出
2.引入,使用自定义模块
再创建一个modules2.js 的文件(第二个模块),并且在第二个模块中引入模块,并使用。
var mod1=require('./modules1');//引入模块
// 使用modules1模块中提供的访问接口
mod1.a();
console.log(mod1.c);
在modules2.js模块中通过require('./modules1')加载modules1模块,然后可以直接访问modules1模块中exports对象的成员函数。
3.require文件加载
require方法接受以下一种形式的参数
- http,fs,path等,原生模块
- ./mod 或者 ../mod, 相对路径的文件模块
- /module/a, 绝对路径的模块
require('http');//原生模块
require('./mod')//自定义模块的引入
require('/module/a')// 绝对路径的模块
网友评论