新建一個檔案 server.js,程式碼如下
// 匯入http模組
const http = require('http');
// 定義主機和埠號
const hostname = '127.0.0.1';
const port = 3000;
// 建立HTTP伺服器
const server = http.createServer((req, res) => {
// 獲得HTTP請求的method和url:
console.log(req.method + ': ' + req.url);
// 將HTTP響應200寫入response, 同時設定Content-Type: text/html:
res.writeHead(200, { 'Content-Type': 'text/html' });
// 傳送響應
res.end('<h1>Hello, Eric!</h1>');
});
// 啟動伺服器監聽指定的主機和埠
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
要執行這個伺服器,您只需將以上程式碼儲存到一個.js
檔案中(例如server.js
),然後在終端中執行node server.js
命令。然後,您可以在瀏覽器中訪問http://127.0.0.1:3000/
來檢視您的伺服器是否正常執行。
講解
可替代的程式碼
res.writeHead(200, { 'Content-Type': 'text/html' });
可以用
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.setHeader
和 res.writeHead
都是 Node.js HTTP 模組中用於設定 HTTP 響應頭的方法,但它們有一些不同之處:
-
res.setHeader
:res.setHeader(name, value)
方法用於設定指定名稱的響應頭的值。如果已存在具有指定名稱的響應頭,則該值將被替換為新值。- 該方法可以多次呼叫來設定不同的響應頭。
- 例如:
res.setHeader('Content-Type', 'text/html'); res.setHeader('Cache-Control', 'max-age=3600');
-
res.writeHead
:res.writeHead(statusCode, [reasonPhrase], [headers])
方法用於寫入響應頭和狀態碼到響應流中,並且可以在寫入響應體之前呼叫。- 該方法允許您一次性設定狀態碼、原因短語和響應頭,如果指定了響應頭,它將覆蓋之前透過
res.setHeader
設定的同名響應頭。 - 例如:
res.writeHead(200, 'OK', {'Content-Type': 'text/html', 'Cache-Control': 'max-age=3600'});
通常情況下,如果您只需要設定少量的響應頭,可以使用 res.setHeader
。但是,如果您需要在一次操作中設定多個響應頭以及狀態碼和原因短語,那麼可以使用 res.writeHead
。
在 Node.js 的 res.writeHead
方法中,引數2 reasonPhrase
是可選的,因此您可以選擇省略它。如果省略了 reasonPhrase
,則將使用預設的原因短語,與指定的狀態碼相對應。
例如,如果您只想設定狀態碼為 200,並使用預設的原因短語 "OK"
,您可以這樣呼叫 writeHead
方法:
res.writeHead(200, {'Content-Type': 'text/html', 'Cache-Control': 'max-age=3600'});
在這個例子中,我們省略了第二個引數 reasonPhrase
,並且狀態碼為 200 對應的預設原因短語將被使用。
在 Node.js 的 server.listen
方法中,hostname
引數是可選的,如果省略,則伺服器將會監聽所有可用的網路介面。
如果您省略了 hostname
引數,程式碼會像這樣:
server.listen(port, () => {
console.log(`Server running on port ${port}`);
});
在這個例子中,伺服器將監聽所有可用的網路介面,而不限制於特定的主機名。這對於大多數情況下都是合適的,特別是在您只需要在本地開發環境中執行伺服器時。
當伺服器監聽所有可用的網路介面時,它將會在所有可用的網路地址上接受連線請求,而不僅限於特定的主機名。這意味著可以透過計算機上的任何網路介面訪問伺服器,無論是透過本地迴環地址(localhost)、本地區域網 IP 地址還是公共 IP 地址。
後臺執行Node.js伺服器並隱藏終端
要在後臺執行Node.js伺服器並隱藏終端,您可以使用以下方法之一:
-
使用nohup命令(適用於Unix系統):
nohup node server.js > /dev/null 2>&1 &
這將在後臺啟動Node.js伺服器,並將輸出重定向到
/dev/null
,即丟棄所有輸出。伺服器將在後臺執行,而不會在終端上顯示任何輸出。 -
使用PM2程序管理器: 首先,您需要全域性安裝PM2:
npm install -g pm2
然後,在您的專案目錄下啟動伺服器:
pm2 start server.js
這將使用PM2在後臺啟動Node.js伺服器,並管理其執行狀態。您可以使用
pm2 logs
命令檢視日誌,使用pm2 stop
命令停止伺服器。
這兩種方法都允許您在後臺執行Node.js伺服器,而不會在終端上顯示輸出。