node學習 搭建簡單的靜態伺服器

2021-08-19 11:50:37 字數 2813 閱讀 7096

1

.server 物件建立,通過http模組建立server物件,這裡我們對請求的路徑未做區分,只是單純的返回當前的請求位址

2.下面我們對路徑進行區分,即當請求對應的檔案路徑時,如果檔案存在則返回對應的靜態檔案,如果請求靜態檔案不存在,那麼返回"404"

-  這裡用的是流的形式createreadstream而不是readfile,是因為後者會在得到完整檔案內容之前將其先讀到記憶體裡。這樣萬一檔案很大,再遇上多個請求同時訪問,readfile就承受不來了。使用檔案可讀流,服務端不用等到資料完全載入到記憶體再發回給客戶端,而是一邊讀一邊傳送分塊響應

class staticserver

// 404響應

respondnotfound(pathname,res) is not found~~`);

}// 用於返回檔案的內容

respondfile(filename,res)

useserver()else

}).listen(this.port,()=>`)})}

}

3.

此時進行請求,我們通過響應頭,看到不論是css亦或是的網路檔案的型別都是"text/html",這是由於我們在respondfile函式中設定了"content-type"一致為"text/html",這樣就導致了除了text/html型別的檔案無法正常檢視

- 為了解決上述的問題,需要對不同的檔案型別設定不同的"content-type",這裡我們採用node自帶的mime模組來響應不同檔案型別的請求,更改respondfile函式如下:

// 用於返回檔案的內容

respondfile(filename,res);charset=utf-8`);

fs.createreadstream(filename).pipe(res);

}

- 此時我們再看檔案的"content-type"就會是其檔案對應的"content-type":

在上面的**中,我們請求的位址一直是某乙個具體的檔案,例如http://localhost:8080/index.html這樣的url,如果我們請求的位址為http://localhost:8080,那麼就會發生如下報錯:

- 為了解決這個問題,我們在對非檔案進行請求時,即對目錄檔案進行請求時,預設返回請求目錄下的index.html,如果index.html不存在的話,那麼返回這個目錄下的所有檔案。首先我們先預設返回請求目錄下的index.html

fs.stat(filename,(err,stats)=>else if (stats.isdirectory())

});

- reaponddiretory如下:

// 用於返回當路徑為目錄時的內容

reaponddiretory(filename,res)

}

- 此時如果當前目錄下並沒有index.html的話,那麼則返回目錄下的所有 檔案,**如下:

// 用於返回當路徑為目錄時的內容

reaponddiretory(filename,res,req)else)}}

5.以上就是使用node搭建的簡單的靜態伺服器,完整**如下:

// 404響應

respondnotfound(pathname,res) is not found~~`);

}// 用於返回檔案的內容

respondfile(filename,res);charset=utf-8`);

let rs = fs.createreadstream(filename);

rs.pipe(res);

}// 用於返回當路徑為目錄時的內容

reaponddiretory(filename,res,req)else)}}

useserver()elseelse if (stats.isdirectory())

});}

}).listen(this.port,()=>`)})}

}module.exports = staticserver;

文章參考:使用node.js搭建靜態資源伺服器

node 靜態伺服(搭建服務)

不急著寫下第一行 而是先梳理一下就基本功能而言有哪些步驟。在本地根據指定埠啟動乙個http server,等待著來自客戶端的請求 當請求抵達時,根據請求的url,以設定的靜態檔案目錄為base,對映得到檔案位置 檢查檔案是否存在 如果檔案不存在,返回404狀態碼,傳送not found頁面到客戶端 ...

node的express模組簡單搭建伺服器

const express require express 引入模組 express 建立 靜態託管 use express.static user get req,res post req,res 1.匯入express 2.建立路由物件 var router express.router 3.掛...

使用node搭建靜態資源伺服器

npm install yumu static server g shift 滑鼠右鍵 在此處開啟powershell 視窗 server 會在當前目錄下啟動乙個靜態資源伺服器,預設埠為8080 server p port 3000 會在當前目錄下啟動乙個靜態資源伺服器,埠為3000 server ...