只在此山中,雲深不知處


聽首歌



© 2018 by Shawn Huang
Last Updated: 2018.5.27

HTTP

HTTP也是屬於Core module,它可以讓我們建立HTTP Server。其實在一開始驗證安裝是否完成時便做過一次,現在可以理解其中意義了。
>> node3_1.js
首先當然要require('http'),然後使用createServer()函數,此函數會傳回http.Server物件。參數是一個函數,該函數自動加到requst事件,所以會有兩個參數,一個request,一個response。request屬於http.IncomingMessage物件,response屬於http.ServerResponse物件。此處直接呼叫end()結束,但是給予字串作為參數值,表示以此為結束。最後呼叫server.listen方法在特定port或路徑建立listener,語法是server.listen(port, hostname, backlog, callback);參數都是optional,此處選擇3000作為port number。如一開始所說的,開始執行後,在瀏覽器上打localhost:3000可以看到輸出結果。
我們可以使用setHeader函數來設定內容型態的值,所以可以將程式碼改寫為: res.write()方法是將參數作為response輸出,而setHeader方法設定response內容為純文字(text/plain),因為內容都是文字,所以沒有甚麼差別,若是我們將res.write的內容改為res.write('<h1>Hi, there,</h1>');結果會顯示出<h1>Hi, there,</h1>因此若是要顯示出html的內容,需要設定header使其為html,如下:
Server的request將網址列訊息儲存在url參數,我們可以使用之前說過的url module來parse。
>> node3_2.js
你也可以試著印出res.write(req.url);的內容便知道指的是哪個部分。

readFile


我們可以利用之前的readFile方式來讀取其他檔案內容來顯示到Server,首先先建立一個html檔案如下。
>> IronForgeCity.html
接下來建立nodejs檔案。
>> node3_3.js
writeHead函數的語法是response.writeHead(statusCode[, statusMessage][, headers]);其中statusCode是一個三碼的數字,例如404代表有問題,200代表正常。statusMessage是optional,第三個是header物件,也是optional。
若是要讀取的是JSON資料,可以以下方式。
>> node3_3_json.js

NPM


NPM是Node Package Manager的簡稱,可以協助我們管理package,在安裝node.js的時候已經一併安裝,所以可以直接使用。 更多詳情可以參考這裡