為了讓Node.js的文件可以相互調(diào)用绍傲,Node.js提供了一個簡單的模塊系統(tǒng)憾儒。
模塊是Node.js 應(yīng)用程序的基本組成部分,文件和模塊是一一對應(yīng)的跟啤。換言之诽表,一個 Node.js 文件就是一個模塊,這個文件可能是JavaScript 代碼隅肥、JSON 或者編譯過的C/C++ 擴(kuò)展竿奏。
創(chuàng)建模塊
在 Node.js 中,創(chuàng)建一個模塊非常簡單腥放,如下我們創(chuàng)建一個 main.js 文件泛啸,代碼如下:
var hello = require('./hello');
hello.world();
以上實(shí)例中,代碼 require('./hello') 引入了當(dāng)前目錄下的 hello.js 文件(./ 為當(dāng)前目錄秃症,node.js 默認(rèn)后綴為 js)候址。
Node.js 提供了 exports 和 require 兩個對象吕粹,其中 exports 是模塊公開的接口,require 用于從外部獲取一個模塊的接口岗仑,即所獲取模塊的 exports 對象匹耕。
接下來我們就來創(chuàng)建 hello.js 文件,代碼如下:
exports.world = function() {
console.log('Hello World');
}
在以上示例中赔蒲,hello.js 通過 exports 對象把 world 作為模塊的訪問接口泌神,在 main.js 中通過 require('./hello') 加載這個模塊,然后就可以直接訪 問 hello.js 中 exports 對象的成員函數(shù)了舞虱。
有時候我們只是想把一個對象封裝到模塊中欢际,格式如下:
module.exports = function() {
// ...
}
例如:
//hello.js
function Hello() {
var name;
this.setName = function(thyName) {
name = thyName;
};
this.sayHello = function() {
console.log('Hello ' + name);
};
};
module.exports = Hello;
這樣就可以直接獲得這個對象了:
//main.js
var Hello = require('./hello');
hello = new Hello();
hello.setName('BYVoid');
hello.sayHello();
模塊接口的唯一變化是使用 module.exports = Hello 代替了exports.world = function(){}。 在外部引用該模塊時矾兜,其接口對象就是要輸出的 Hello 對象本身损趋,而不是原先的 exports。