1. 程式人生 > >nodejs學習筆記(一)——nodejs的安裝和啟動第一個httpserver

nodejs學習筆記(一)——nodejs的安裝和啟動第一個httpserver

對於一個前臺開發而言,沒有使用過nodejs簡直是一種恥辱,不過什麼時候開始都不算晚,故以下是筆者在洗刷恥辱過程中的一點經驗,供大家分享。

入門是在runoob的教程指導下開始的,但是教程裡面更多的是介紹nodejs裡面這個功能是怎麼玩,很少會提及在實際的開發過程中應該怎麼使用這些功能,所以在本系列文件裡會加一些筆者對這些功能該如何使用的思考。

首先是nodejs的下載,點選nodejs官網找到匹配自己的版本進行安裝,在本文使用的是64位的windows install版本,安裝以後的版本資訊如下圖:

然後按以下程式碼構造一個後臺server(這部分程式碼可以在教程的 Node.js 建立第一個應用 部分找到):

var http = require('http');

http.createServer(function (request, response) {

	// 傳送 HTTP 頭部 
	// HTTP 狀態值: 200 : OK
	// 內容型別: text/plain
	response.writeHead(200, {'Content-Type': 'text/plain'});

	// 傳送響應資料 "Hello World"
	response.end('Hello World\n');
}).listen(8888);

// 終端列印如下資訊
console.log('Server running at http://127.0.0.1:8888/');

把以上程式碼儲存在一個js檔案中(如xxx.js),然後在windows的命令列視窗切換到js檔案所在目錄,通過node xxx.js執行(執行後不能停止停止server或關閉命令列視窗)。

注意:執行的時候可能會報埠被佔用的錯誤,可以把埠改一把再試試。

server端執行時如下圖:

在瀏覽器端訪問時如下圖:

就目前這個server而言我們還看不出來具體能用來做什麼,接下來我們把server端程式碼稍微改一下(加上一段列印request.url的日誌):

var http = require('http');

http.createServer(function (request, response) {

	// 傳送 HTTP 頭部 
	// HTTP 狀態值: 200 : OK
	// 內容型別: text/plain
	response.writeHead(200, {'Content-Type': 'text/plain'});
	
	console.log(request.url);

	// 傳送響應資料 "Hello World"
	response.end('Hello World\n');
}).listen(8888);

// 終端列印如下資訊
console.log('Server running at http://127.0.0.1:8888/');

這個時候我們再通過瀏覽器訪問,可以看到server端會打印出請求的url:

可能上面的例子url只有一個/不明顯,那麼我們再通過http://127.0.0.1:8888/test來訪問一把:

這表示我們啟動的server可以響應任意的請求,這樣簡單的server用來給前臺開發打樁再合適不過了。在實際的開發過程中,前後臺是並行開發的,不可能等後臺開發完成可以提供成熟的呼叫介面了再開始開發前臺(假如前臺需要對介面提供資料進行復雜的邏輯處理或前臺需要對多個介面資料進行綜合處理),而前後臺互動依賴的介面往往是在設計階段就定義好了,那麼就可以在這個server中按照定義的介面構造出假的響應訊息(即樁資料,整個構造過程筆者稱之為打樁),在前臺的開發除錯時就可以先呼叫這些樁資料,而不用依賴真正的後臺介面。

下面我們還是用一個例子來說明,重新改一下server的程式碼,當請求url為http://127.0.0.1:8888/json則返回一個json物件,其他url時則返回一個字串:
var http = require('http');

http.createServer(function (request, response) {

    if(request.url == "/json"){
        response.writeHead(200, {'Content-Type': 'application/json'});
        var data = {
            "name":"nodejs",
            "value":"stone"
        };
        response.end(JSON.stringify(data));
    }else{
        response.writeHead(200, {'Content-Type': 'text/plain'});

        response.end('Hello World\n');
    }
	
}).listen(8888);

// 終端列印如下資訊
console.log('Server running at http://127.0.0.1:8888/');
當訪問http://127.0.0.1:8888/json時: 這裡只是簡單地構造了一個新的url,返回了一個json物件,根據nodejs的http api我們完全可以按我們的開發需求來構造樁資料,比如構造不同的請求方式(get、post等等)的介面、不同響應訊息體(json、xml等等)的介面、對安全有要求(如需要在http頭裡加sessionid等等)的介面或是介面的特殊狀態(如有延遲,可以在server程式碼里加一個setTimeout),如果後續有時間的話會補充相應的例子。