Node.js是以Google V8 JavaScript引擎為基礎(chǔ)的服務(wù)器端技術(shù),簡(jiǎn)單的說就是運(yùn)行在服務(wù)端的JavaScript。它使用了一個(gè)事件驅(qū)動(dòng)、非阻塞式 I/O 的模型,輕量又高效。
當(dāng)然,學(xué)習(xí)node就要先安裝node.js,網(wǎng)上的教程有很多。我們要確保本機(jī)上node和npm能正常運(yùn)行。
第一個(gè)node程序
// load http module
var http = require('http');
// create http server
http.createServer(function(request, response) {
// content header
response.writeHead(200, {
'content-type': 'text/plain'
});
// write message and signal communication is complete
response.end("Hello World\n");
}).listen(8124);
console.log('Server running on 8124');
將代碼保存為 helloworld.js ,運(yùn)行如下命令來啟動(dòng)程序 :
node helloworld.js
在瀏覽器中會(huì)看到一個(gè)顯示有"Hello World"內(nèi)容的頁(yè)面
分析
. var http = require('http);
node中的許多功能都是通過外部程序或庫(kù)來提供,被我們稱作模塊(modules)。第一行中,我們通過require來載入http模塊。HTTP模塊能提供基本的HTTP功能,可以讓應(yīng)用程序支持對(duì)網(wǎng)絡(luò)的訪問。
. http.createServer(function(request,response){});
使用 createServer 方法創(chuàng)建一個(gè)新的服務(wù)器,并且傳遞一個(gè)匿名函數(shù)來作為該方法的參數(shù)。這個(gè)匿名函數(shù)就是 requestListener 函數(shù),它通過兩個(gè)參數(shù)來接收和響應(yīng)數(shù)據(jù),一個(gè)是代表服務(wù)器接收到的請(qǐng)求 ( http.ServerRequest ),另一個(gè)代表服務(wù)器的響應(yīng) ( http.ServerResponse )。
. response.writeHead(200, {
'content-type': 'text/plain'
});
該方法用來發(fā)送相應(yīng)信息的HTTP頭, 指定HTTP狀態(tài)碼 ( status code ) 為200,內(nèi)容類型為:text/plain。
. response.end("Hello World\n");
調(diào)用 http.ServerResponse.end 方法表示本次通信已經(jīng)完成,并且 “Hello World”內(nèi)容被放入到了響應(yīng)信息中。該方法不可缺少。
. }).listen(8124);
匿名函數(shù)和 createServer 函數(shù)結(jié)束,listen方法指定端口監(jiān)聽。
. console.log('Server running on 8124');
終端打印信息,將文本信息輸出到命令行。
總結(jié)
使用 node.js 時(shí),我們不僅僅實(shí)現(xiàn)了一個(gè)應(yīng)用,還實(shí)現(xiàn)了整個(gè) HTTP 服務(wù)器。
讓 js 運(yùn)行在服務(wù)端,這真的很酷,希望自己的 node 之旅玩的很嗨 -