模塊多是一個文件,也多是包含一個或多個文件的目錄。若是模塊是個目錄,node.js一般會在這個目錄下找一個叫index.js的文件做爲模塊的入口。node
典型的模塊是一個包含exports對象屬性定義的文件,這些屬性能夠是任意類型的數據,好比字符串、對象和函數。json
建立一個模塊 函數
//person.js var name = 'lbs'; var age = 10; function sayName(){ console.log( name ); } function sayAge(){ console.log( age ); } exports.sayName = sayName; exports.sayAge = sayAge;
引入一個模塊ui
//index.js var person = require('./person'); person.sayName(); person.sayAge();
require函數以要用的模塊的路徑爲參數。this
引入一個以 ./ 開頭的模塊意味着:當前文件和被引用的文件屬於同一級目錄(這裏的person.js 和 index.js 位於同一個目錄下)。spa
引入時 .js 擴展名能夠忽略。prototype
若是須要從模塊中獲得單個變量、函數或者對象,用module.exports。對象
//person.js var Person = function(){ this.name = 'lbs'; this.age = 10; }; Person.prototype = { sayName: function(){ console.log( this.name ); }, sayAge: function(){ console.log( this.age ); } }; module.exports = Person; //index.js var Person = require('./person'); var person = new Person(); person.sayName(); person.sayAge();
若是模塊是目錄,在模塊目錄中定義模塊的文件必須被命名爲index.js。除非在這個目錄下一個叫package.json的文件裏特別指明。要指定一個取代index.js的文件,package.json文件裏必須有一個用JavaScript對象表示法(JSON)數據定義的對象,其中有一個名爲main的鍵,指明模塊目錄內主文件的路徑。接口
exports是模塊的公開接口ip
require從外部獲取一個模塊接口(獲取的模塊是exports對象)