Node.js 是一個基於Chrome JavaScript 執(zhí)行階段建立的平臺。
Node.js是一個事件驅(qū)動I/O服務(wù)端JavaScript環(huán)境,基於Google的V8引擎,V8引擎執(zhí)行Javascript的速度非???,效能非常好。
Node.js 事件循環(huán) 語法
Node.js 是單進(jìn)程單線程應(yīng)用程序,但是因為 V8 引擎提供的異步執(zhí)行回調(diào)接口,透過這些接口可以處理大量的並發(fā),所以性能非常高。
Node.js 幾乎每一個 API 都是支援回呼函數(shù)的。
Node.js 基本上所有的事件機(jī)制都是用設(shè)計模式中觀察者模式實作。
Node.js 單執(zhí)行緒類似進(jìn)入一個while(true)的事件循環(huán),直到?jīng)]有事件觀察者退出,每個非同步事件都會產(chǎn)生一個事件觀察者,如果有事件發(fā)生就呼叫該回呼函數(shù).
Node.js 事件循環(huán) 範(fàn)例
建立 main.js 文件,程式碼如下所示:
// 引入 events 模塊 var events = require('events'); // 創(chuàng)建 eventEmitter 對象 var eventEmitter = new events.EventEmitter(); // 創(chuàng)建事件處理程序 var connectHandler = function connected() { console.log('連接成功。'); // 觸發(fā) data_received 事件 eventEmitter.emit('data_received');} // 綁定 connection 事件處理程序 eventEmitter.on('connection', connectHandler); // 使用匿名函數(shù)綁定 data_received 事件 eventEmitter.on('data_received', function(){ console.log('數(shù)據(jù)接收成功。');}); // 觸發(fā) connection 事件 eventEmitter.emit('connection'); console.log("程序執(zhí)行完畢。");