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的時候已經一併安裝,所以可以直接使用。
- 在DOS視窗內打npm -v(或npm --version),可以看到npm的版本。
- 若要搜尋想要的package,使用npm search package_name 來搜尋,例如想要搜尋名為upper-case的package,則輸入npm search upper-case。
- 若是想要安裝該package,則使用npm install package_name(或npm i package_name),例如要安裝upper-case這個package,輸入npm install upper-case便會開始下載,需要注意的是此指令會在當前工作目錄下,建立一個名為node_modules的資料夾(若是原本沒有這個資料夾的話),並將下載內容儲存在內。所以上例下載完成後,會發現node_modules資料夾,並在內找到upper-case這個資料夾,然後就可以使用了。 可以看到輸出結果皆為大寫字母。這個安裝方式原則上是locally,其他資料夾內應無法使用。
- 若是要安裝全域皆可使用的package,則使用以下指令: npm install -g package_name(或npm i -g package_name) 例如想要安裝nodemon這個package,可以使用npm install -g nodemon,便可以全域使用。在執行node.js檔案時,可以使用nodemon代替node,不同處是nodemon不需要像之前使用node那般按Ctrl+C來斷線然後再連線,它會自動偵測檔案是否改變然後重新啟動。
- 若是想要顯示package內容則使用npm show package_name
- 若是想要解除安裝則使用npm uninstall package_name
- 若是想要更新則使用 npm update package_name(只打npm update會更新所有package)