nodejs 中模組使用的介紹
模組的分類
核心模組: 如 http
檔案模組: 如 var util = require(‘./util.js’)
第三方模組: 如 var promise=require(‘bluebird’)
模組的使用流程
建立模組: teacher.js
匯出模組: exports.add = function(){}
載入模組: var teacher = require(‘./teacher.js’)
使用模組: teacher.add(‘Tom’)
require,exports 和 module
require 函式用於在當前模組中載入和使用別的模組,傳入一個模組名,返回一個模組匯出物件。模組名可使用相對路徑(以./開頭),或者是絕對路徑(以/ 或C: 之類的碟符開頭)。另外,模組名中的.js 副檔名可以省略。
exports 物件是當前模組的匯出物件,用於匯出模組公有方法和屬性。別的模組通過 require 函式使用當前模組時得到的就是當前模組的 exports 物件。
module 物件可以訪問到當前模組的一些相關資訊,但最多的用途是替換當前模組的匯出物件。例如模組匯出物件預設是一個普通物件。
模組初始化
一個模組中的 JS 程式碼僅在模組第一次被使用時執行一次,並在執行過程中初始化模組的匯出物件。之後,快取起來的匯出物件被重複利用。
使用舉例
我們假設有一個學校,學校裡有班級,老師,學生等成員。我們可以把班級,老師,學生先模組化再整合在一起。
老師模組: teacher.js
function add(teacher){
console.log('Add Teacher',teacher)
}
exports.add = add;
學生模組: student.js
function add(student){
console.log('Add Student',student)
}
exports.add = add;
班級模組: class.js
var student = require('./student');
var teacher = require('./teacher');
function add(teacherName,students) { //班級由一個老師和多個學生組成
teacher.add(teacherName);
students.forEach(function(item,index){
student.add(item);
})
}
exports.add=add; //使模組成為傳統的模組例項
//module.exports=add; //使模組成為特別的物件型別
新建一個測試檔案:index.js
var c = require('./class');
c.add('Scot',['高富帥','白富美'])
這時候再命令列下輸入: node index
就會列印輸出如下資訊:
add Teacher Scot
add Student 高富帥
add Student 白富美