看了樸靈前輩的node.js系列文章,很開闊視野,雖然能力有限仍是有不少不懂,可是仍是但願能寫下筆記,初步對node.js有點了解。javascript
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(80, "127.0.0.1");
說明:在本地監聽80端口,對於任意的http請求,服務器都返回一個頭部狀態碼爲200、Content-Type'值爲text/plain'的」Hello World「文字響應。
Node.js的網絡編程比較便利,提供的模塊(在這裏是http)開放了容易上手的API接口,短短几行代碼就能夠構建服務器。
體現了事件驅動、異步編程,在createServer函數的參數中指定了一個回調函數(採用Javascript的匿名函數實現),當有http請求發送過來時,Node.js就會調用該回調函數來處理請求並響應。固然,這個例子相對簡單,沒有太多的事件註冊,在之後的文章中讀者會看到更多的實際例子。java
另外一個實例:
Javascript的匿名函數和閉包特性很是適合事件驅動、異步編程,從helloworld例子中咱們能夠看到回調函數採用了匿名函數的形式來實現,很方便。閉包的做用則更大,看下面的代碼示例:node
var hostRequest = http.request(requestOptions,function(response) { var responseHTML =''; response.on('data', function (chunk) { responseHTML = responseHTML + chunk; }); response.on('end',function(){ console.log(responseHTML); // do something useful }); });
單進程、單線程模式運行(很吃驚,對吧?這和Javascript的運行方式一致),事件驅動機制是Node.js經過內部單線程高效率地維護事件循環隊列來實現的,沒有多線程的資源佔用和上下文切換,這意味着面對大規模的http請求,Node.js憑藉事件驅動搞定一切編程