Node學習之HTTP模塊

node中有一個很是強大的模塊,就是用於建立網絡應用的HTTP模塊。例如咱們能夠建立一個服務監聽某個給定的端口,這樣咱們就能夠爲客戶建立一個後端服務。就像React或者Angular建立的應用,或者在手機上使用的移動端應用。node

回到node的文檔中,能夠找到HTTP模塊的信息,在這裏能夠看到不少類,好比http.Agenthttp.ClientRequest等等。每一個類都有不少熟悉,方法和事件。 數據庫

打開編輯器,實際上手纔是最重要的。
這裏的 server也是一個 EventEmitter類,天然也是具有全部 EventEmitter的功能。
node的官方文檔中的 HTTP模塊能夠看到 http.Server,點進去就知道這個類繼承自 net.Server類,這是另外一個定義在 net模塊中的類,點進去看文檔說明知道 net.Server是一個 EventEmitter。這也是說在 node中不少功能都基於 EventEmitter

回到編輯器,繼續寫下去。 json

當咱們在控制檯運行應用的時候,就會監聽端口號3000。就像以前所說的,當有一個請求或者瞭解, server就會發起事件。天然咱們就可使用 on方法來處理事件,在監聽以前咱們先要建立一個監聽器,或者說是句柄。
上面的事件第一個參數的事件名稱是 connection,能夠在文檔中找到,第二個是一個回調函數,或者說是真正的監聽者。這個監聽者是一個 socket類的實例。在控制檯運行能夠看到它在監聽3000端口了,須要中止監聽直接 Ctrl+C鍵強制退出便可。
在瀏覽器打開這個端口地址: http://localhost:3000/
回到控制檯能夠看到打印了「新的鏈接」的文字。因此這個 server對象能夠發起不一樣的事件待咱們處理。

如今咱們換一種方式,直接給CreateServer方法一個回調函數,這個函數須要兩個參數。分別是請求和響應,這樣就能夠直接操做真實的requestresponse對象。咱們能夠檢測若是請求的url/,咱們就返回點東西給客戶端。 後端

瀏覽器打開,咱們在網頁中看到了文字 Hello World

固然咱們若是想建立一個網絡應用的後端服務,須要處理不少的路由規則。咱們繼續添加一個if代碼塊。假設咱們想從數據庫返回課程的列表,當請求路徑匹配的話,就返回一個json對象。 數組

瀏覽器打開,在網頁中咱們看到了已經將數組轉換爲 json數據格式的數據。
固然這樣每次控制檯執行後還須要手動打開瀏覽器仍是有點麻煩,咱們再改造下,讓控制檯執行後自動打開瀏覽器。

//require引入child_process,自動打開瀏覽器
const childProcess = require('child_process');
//監聽後自動打開瀏覽器
childProcess.exec('start http://127.0.0.1:3000/');
複製代碼

這就是一個最基本的node建立的服務器,現實中咱們不會使用http模塊直接建立後端服務。緣由是隨着項目需求愈來愈多時,所須要寫的路由規則也是隨着增加。一直都是在回調函數中線性的增長它們的內容,取而代之的是使用一個叫Express的框架。它能夠給應用一個清晰的結構,來處理不一樣的路由請求,使用Express來替代node原有的HTTP模塊的功能。瀏覽器

相關文章
相關標籤/搜索