[TOC]
Node.js模塊系統(tǒng)
為了讓Node的文件可以相互調(diào)用,Node提供了一個簡單的模塊系統(tǒng)
模塊是Node應用程序的基本組成部分,文件和模塊是一一對應的,一個Node文件就是一個模塊,這個文件可能是js文件,也可能是json文件等
1.創(chuàng)建模塊
一個Node js文件就是一個模塊,所以我們創(chuàng)建一個modules1.js 的文件就是創(chuàng)建了一個模塊。若要提供當前模塊給另外模塊使用,我們需要將文件導出
// 第一種:
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作為模塊的訪問接口;
我們也可以使用另外一種方式創(chuàng)建導出模塊:
// 第二種:
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賦值(賦值的類型可以是變量或對象或函數(shù))的形式,同時導出模塊中的class A和class B;使用這種方式也可以導出單個函數(shù)或類,均以賦值的形式使用。
相較于第一種方式唯一的變化是使用module.exports=xx代替了exports.xx=function(){};我們推薦大家使用第二種方式,它可以隱藏原有成員變量或成員函數(shù)的名稱,統(tǒng)一導出
2.引入,使用自定義模塊
再創(chuàng)建一個modules2.js 的文件(第二個模塊),并且在第二個模塊中引入模塊,并使用。
var mod1=require('./modules1');//引入模塊
// 使用modules1模塊中提供的訪問接口
mod1.a();
console.log(mod1.c);
在modules2.js模塊中通過require('./modules1')加載modules1模塊,然后可以直接訪問modules1模塊中exports對象的成員函數(shù)。
3.require文件加載
require方法接受以下一種形式的參數(shù)
- http,fs,path等,原生模塊
- ./mod 或者 ../mod, 相對路徑的文件模塊
- /module/a, 絕對路徑的模塊
require('http');//原生模塊
require('./mod')//自定義模塊的引入
require('/module/a')// 絕對路徑的模塊