CommonJS標準 每一個模塊都由一個上下文將該模塊與其餘模塊隔離 標準的回調模式: (CPS Continuation-passing style):後繼傳遞風格 異步編程風格是一種程序的流程控制權之後繼的形式被顯式的傳遞的編程風格。 按後繼傳遞風格編寫的函數以一個顯式的"後繼"做爲額外的參數,"後繼"實際 上是一個函數,當CPS函數計算出返回值時,它就調用後繼函數,並將 CPS 函數的返回值做爲參數。這種模式可以很好的處理函數執行結束後須要通知客戶端的狀況。 var fs = require('fs'); fs.readFile('/etc/passwd',function(err,fileContent){ if(err){ throw err; } console.log("fileContent " + fileContent.toString()); }); //回調函數第一個參數是一個錯誤對象,若是有錯誤發生,這個參數就是Error的一個實例,這就是比Node中的應用CPS編程的通常模式。 理解事件發射器模式: 事件發射器:能夠發射事件的對象。 事件監聽器:綁定到事件發射器上的代碼,負責監聽特定類型的事件。 理解事件類型: 發射的事件具備必定的類型,類型用一個字符串表示如"data","end","on" 等,他們都是由事件發射器定義的任意字符串。當你使用到API時 應該會有對應的文檔記錄他可以發射的事件類型。 一旦有事件發生,事件發射器就會調用相應的事件監聽器,並將相關數據做爲參數傳遞給事件監聽器。 雖然事件發生器時服務任意類型事件的通用接口,但在Node的實現中有一個特例即error事件,Node中大多數事件發射器實如今程序發生錯誤時都會發射"error"事件,因此都要監聽這個錯誤事件,防止向上拋出異常。 應用事件發射器API: 任何實現了事件發射器模式的對象(例如:TCP http等)都實現了: 1:addListener 和on ->爲指定的事件添加事件監聽器 2:once->爲指定的事件添加只會調用一次的事件監聽器 3:removeEventListener ->刪除綁定到指定事件上的某個指定的事件監聽器。 4:removeAllEventListener ->刪除綁定到指定事件上的所有的事件監聽器。 容許綁定多個事件監聽器。根據事件類型,事件發射器負責按照事件所綁定的監聽器的註冊順序依次調用事件監聽器。這就意味着: 1:某個事件監聽器也許並不會在事件發射以後就當即被調用,也許在它以前還有別的事件監聽器被調用。 2:異常被拋出到堆棧並不正常,他一般時有代碼中的錯誤引發的。 建立事件發射器: 1:從Node事件發射器繼承 var util = require('util'); var eventEmitter = require('events').EventEmitter; var myClass = function(){} util.inherits(myClass,eventEmitter);//util.inherits創建了一條原型鏈,使myClass類實例可以使用EventEmitter的原型方法