Node.js 最主要的應用是服務器序。html
設計Node.js 的一個主要目的是提供高度可擴展的服務器環境。這是咱們在
本章開篇介紹過的Node 和V8 引擎有所區別的地方。Node 除了用V8 引擎來解析
JavaScript 外,還提供了高度優化的應用庫,用來提升服務器效率。好比說,HTTP
模塊是專爲快速非阻塞式HTTP 服務器而用C 從新編寫的。讓咱們看一下Node 採
用HTTP 服務器的「Hello World」經典例子node
var http=require('http');//引入核心HTTP模塊 /*建立服務器*/ var server=http.createServer(function(req,res){ res.writeHead(200,{"Content-type":'text/html'}); res.end('hello world'); }); /*監聽IP以及端口*/ server.listen(8124,'127.0.0.1',function(){ console.log('服務器建立成成功:127.0.0.1:8124'); });
運行代碼以下所示服務器
ZXD@ZXD-PC /K/work/learn/nodejs/cvs01
$ node app
服務器建立成成功:127.0.0.1:8124app
這個示例代碼首先經過require 方法把HTTP 庫包含到程序中來。有許多語言都有
包含其餘庫這一方法,Node 用的是CommonJS 模塊風格。函數
當前須要瞭解的是,HTTP 庫所具備的功能已經賦給了http 對象。
下一步,咱們須要一個HTTP 服務器。PHP 等其餘語言須要在相似Apache 這樣的
服務器中運行,而Node 和它們不一樣,由於Node 自己就是Web 服務器。但這一樣
意味着咱們須要先建立該服務器。下一行代碼調用HTTP 模塊的一個工廠模式方法
(createServer)來建立新的HTTP 服務器。新建立的HTTP 服務器並無賦值給
任何變量,它只會成爲存活在全局範圍內的匿名對象。咱們能夠經過鏈式調用來初
始化服務器,並告訴它監聽在8124 端口。
當調用createServer 的時候,咱們傳了一個匿名函數做爲參數。此函數綁定在
新建立服務器的事件監聽器上進行request 事件處理。消息事件是JavaScript 和
Node 的核心。在這個例子中,每當一個新的訪問請求到達Web 服務器,它都將調
用咱們指定的函數方法來處理。咱們稱這類方法爲回調(callback)。由於每當一個
事件發生時,咱們將回調監聽此事件的全部函數。優化