node 靜態伺服(搭建服務)

2022-04-29 13:42:09 字數 2650 閱讀 6953

不急著寫下第一行**,而是先梳理一下就基本功能而言有哪些步驟。

在本地根據指定埠啟動乙個http server,等待著來自客戶端的請求

當請求抵達時,根據請求的url,以設定的靜態檔案目錄為base,對映得到檔案位置

檢查檔案是否存在

如果檔案不存在,返回404狀態碼,傳送not found頁面到客戶端

如果檔案存在:

等待來自客戶端的下乙個請求

建立乙個nodejs-static-webserver目錄,在目錄內執行npm init初始化乙個package.json檔案。

mkdir nodejs-static-webserver && cd "$_"

// initialize package.json

npm init

接著建立如下檔案目錄:

-- config

---- default.json

-- static-server.js

default.json

default.js存放一些預設配置,比如埠號、靜態檔案目錄(root)、預設頁(indexpage)等。當這樣的乙個請求http://localhost:9527/myfiles/抵達時. 如果根據root對映後得到的目錄內有index.html,根據我們的預設配置,就會給客戶端發回index.html的內容。

在這個模組檔案內,我們宣告了乙個staticserver類,並給其定義了start方法,在該方法體內,建立了乙個server物件,監聽rquest事件,並將伺服器繫結到配置檔案指定的埠。在這個階段,我們對於任何請求都暫時不作區分地簡單地返回請求的檔案路徑。path模組用來規範化連線和解析路徑,這樣我們就不用特意來處理作業系統間的差異。

const staticserver = require('./static-server');

(new staticserver()).start();

在這個檔案內,呼叫上面的static-server模組,並建立乙個staticserver例項,呼叫其start方法,啟動了乙個靜態資源伺服器。這個檔案後面將不需要做其他修改,所有對靜態資源伺服器的完善都發生在static-server.js內。

在目錄下啟動程式會看到成功啟動的log:

server started on port 9527

在瀏覽器中訪問,可以看到伺服器將請求路徑直接返回了。

之前我們對任何請求都只是向客戶端返回檔案位置而已,現在我們將其替換成返回真正的檔案:

routehandler(pathname, req, res) 

start() ).listen(this.port, err => );

}

將由routehandler來處理檔案傳送。

讀取檔案之前,用fs.stat檢測檔案是否存在,如果檔案不存在,**函式會接收到錯誤,傳送404響應。

respondnotfound(req, res) );

res.end(`

the requested url $ was not found on this server.

`); }

respondfile(pathname, req, res)

routehandler(pathname, req, res) else

});}

note:

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

transfer-encoding:chunked

預設情況下,可讀流結束時,可寫流的end()方法會被呼叫。

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

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

如何搭建node服務

1.首先要安裝好node,js 3.安裝好了,我們開啟cmd,輸入命令列1 node v,這裡是查詢node版本,如果出現以下介面說明已經安裝成功了。4.輸入命令列2 npm install anywhere g 這裡是全域性變數,出現以下介面,說明已經成功安裝了。5.好了,我們把自己的靜態專案放在...

node 本地搭建服務

搭建本地系統 安裝node 安裝mongodb 啟動mongoldb 怎麼看是否已經安裝mongoldb 進目錄 usr local cellar,看是否有 公升級npm,sudo npm install npm g 裝包 npm install,若不行,就用sudo npm install 裝bo...