close

現在開始即將進入nodeJS的世界,每個語言的一開始就是 - Hello, world。

這是一個好的開始,也帶個許多程式編寫者帶來新的希望,看到文字模式等同看到一線曙光啊!走~讓我們看看那道光。
 
安裝與設定篇當中,已經將所有NodeJS所需要基本材料準備完全,接下來所需要的工具就只有『文字編輯器』,而接下來每個檔案,我們都只需要將程式副檔名設定為『.js』,就是瀏覽器前端所使用的javascript腳本副檔名,所有的nodeJS程式都是執行.js腳本運行。
 
話不多說,開啟文字編輯器,檔案內容如下,儲存檔案為hello_world.js
 
console.log("hello, world");
 
接著輸入以下指令。
 
 
node hello_world.js
 
 
會看到結果為
 
恭喜你,完成第一支nodeJS程式!
 
前面已經有寫過程式的各位,都會覺得蠢斃了,只有一個console也想打發走各位,好接下來進入另外一個主題,開始編寫真正的web service。
準備好『文字編輯器』(例如: Vim),開始輸入以下內容。
 
 
var ip   = "127.0.0.1";
var port = 1337;
var http = require('http');
 
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port, ip);
 
console.log("Server running at http://" + ip + ":" + port);
 
輸入完之後,儲存檔案server.js,接著執行server.js。
 
node server.js
 
恭喜你開啟了一個正在執行中的web service。沒錯!就是這麼輕鬆容易,雖然不知道自己在敲什麼內容,不過的確是建立了一個網路服務,可以開啟瀏覽器,輸入剛剛的ip, port,像這邊的範例直接在瀏覽器上輸入網址:『http://127.0.0.1:1337』,又是一個令人興奮的『hello, world』。
附註:如果是遠端機器, 請自行更改var ip ="remote IP";
 
 
好吧!必須承認是有點無聊。但是接下來解說程式裡面,到底做了什麼東西!
 
首先我們需要幾個素材,ipport,這樣才能正常開啟一個web service。在node裡面,有很多東西都已經包裝好了,稱之為物件(module),而我們所需要做的就是引用(include)的動作,所以這邊需要http service,因此引用了require('http'),至於http引用之後,就會產生物件,而node http.createServer API裡面有提到使用的方法。
 
http.createServer,裡面需要帶一個參數,在api提到了,會直接將這個參數加入到request 事件當中,因此直接參考request api到底怎麼一回事,原來裡面帶入了一個呼叫事件(callback function),可以參考api裡面所提到的,直接會帶入request, response兩個物件進入,兩個物件分別在API當中都有提到。
 
進入到呼叫事件當中,這邊只需要做出回應頁面即可,因此只使用res(response),網路資料回傳都必須先有header,request 物件都已經提供writeHead事件(method),設定參數設定為200(表示回傳成功),Content-type型態為text/plain。因為資料只有回傳Hello, world,只需要呼叫end事件,讓資料可以輸出到頁面上,如此就可以讓整個connection回傳成功。
 
前面http在creatServer之後,會回傳http物件回來,因此可以直接採用連綴(chaining)方式直接呼叫listen事件,帶入後面幾個參數設定阜號(port),host(或者ip),呼叫事件(可以不帶入,這邊範例採用不帶入)。
 
所有事情都完成之後,最後讓cli頁面有些回應,因此呼叫console,有使用過javascript都會對這個物件特別熟悉,這邊就不在贅述,console所印出的資料都會顯示於cli的指令頁面,並不會傳送到使用者頁面上,之後許多debug部份都會用到這個物件。
 
以上恭喜完成了艱鉅的任務,你已經建立了第一個偉大的node sevrice.
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 wayne1025 的頭像
    wayne1025

    wayne1025的部落格

    wayne1025 發表在 痞客邦 留言(0) 人氣()