※ 設定首頁路由兩種寫法:
● res.send()
app.get('/', (req, res) => {
res.send('hello world')
})
說明:
- 功能:
res.send()
用於發送 HTTP 回應消息。它可以發送字符串、Buffer、對象、數組等多種數據類型。 - 自動結束:
res.send()
會自動結束回應,因此不需要再調用 res.end()
。 - 簡單方便:適合於簡單的非流式回應。
非流式回應(Non-Streaming Response)是一種在伺服器處理完所有數據後一次性將整個回應發送給客戶端的技術。這與流式回應(Streaming Response)不同,後者是逐步傳輸數據。非流式回應適合於需要完整數據才能進行處理的情況,例如:
- 靜態網頁:伺服器生成整個 HTML 頁面後一次性發送給客戶端。
- API 回應:伺服器處理完所有數據後一次性返回 JSON 或 XML 格式的回應。
- 文件下載:伺服器準備好整個文件後一次性發送給客戶端。
非流式回應的特點:
- 完整性:一次性傳輸完整數據,適合需要完整數據才能進行處理的情況。
- 簡單性:實現簡單,不需要處理數據的逐步傳輸。
- 延遲:可能會有較高的延遲,因為需要等待伺服器處理完所有數據。
使用場景:
- 靜態內容:如靜態 HTML 頁面、圖片、CSS 和 JavaScript 文件。
- API 回應:如 RESTful API 的 JSON 或 XML 回應。
- 文件下載:如 PDF、ZIP 文件的下載。
● res.write()
和 res.end()
app.get('/', (req, res) => {
res.write('hello world');
res.end();
});
說明:
- 靈活性:適合於需要逐步發送數據的情況,例如流式回應。
- 需要結束:
res.write()
需要與 res.end()
搭配使用來結束回應。 - 進階使用:如果你需要多次發送數據塊,
res.write()
是更靈活的選擇。
流式回應(Streaming Response),用於逐步發送數據給客戶端,而不是一次性發送所有數據。這種技術特別適合於需要處理大量數據或需要即時更新的應用場景,例如影片、即時聊天應用或大型文件下載。
流式回應的主要特點:
- 逐步傳輸:數據分塊傳輸,客戶端可以逐步接收和處理數據。
- 降低延遲:數據可以在生成的同時傳輸,減少等待時間。
- 節省資源:減少伺服器和客戶端的內存佔用,提升效能。
- 即時更新:適合於需要即時更新的應用,例如即時聊天或即時數據流。
使用場景
- 影片:如 YouTube 或 Netflix 的影片播放。
- 即時聊天:如LINE或Facebook Messenger 的訊息傳輸。
- 大型文件下載:如操作系統更新或大型應用下載。