核心模組 - http.createServer() | Node.js

閱讀時間約 4 分鐘

目標:透過 node 的 http 模組來建立一個 web 伺服器 (web server)

web 伺服器 (web server)

web 伺服器又稱為網路伺服器或網頁伺服器。web 伺服器是一台託管一個或多個網站的電腦/電腦軟體。託管通常指的是將網站的文件和數據存在伺服器上,以便通過網路提供用戶訪問。當用戶跟 web 伺服器發送請求時,web 伺服器會傳送託管的網站給用戶。

簡略版:你想看的東西放在 web 伺服器那裡,跟它說一聲我要看,它把東西傳給你。

http 模組

node 本身就內建很多模組http 是其中一種,載入內建模組不用特別從資料夾中選擇,還是可以成功載入。

接下來,用 http.createServer() 開啟 web 伺服器。

createServer() 裡面放匿名函式,函式的參數通常命名為 request 和 response (也可以自訂),在函式內處理伺服器接收到的請求(request)和發送給客戶端的回應(response),例如範例中設置回應的標頭以及寫入內容並結束。

執行 app.js 檔,打開 http://localhost:8080/ (localhost 指本地主機) 來查看,就會看到頁面成功顯示 hello!!

var http = require('http'); // 載入 node 內建的 http 模組

http.createServer(function(request, response) {
console.log(request.url); // 取得請求的 url

response.writeHead(200, {"Content-Type": "text/plain"});
response.write('hello!!');
response.end();
}).listen(8080);

request 和 response

request 代表客戶端(通常是瀏覽器)向伺服器發送的 HTTP 請求。它包含了客戶端的一些資訊,例如請求的方法(GET、POST 等)、URL、標頭、以及任何在請求主體中包含的資料(比如表單數據)。
➡️客戶端向伺服器發送的請求,其中包含一些相關的資訊。

response: 代表伺服器給客戶端的回應。這個回應包含了伺服器要傳遞給客戶端的資源或者資訊,例如頁面的內容、圖片、文件等。回應也包含了 HTTP 狀態碼(例如200表示成功、404 表示找不到資源等)、回應標頭(例如 Content-Type 指定響應的內容類型)以及可能的回應主體(即頁面的內容或資源)。

➡️伺服器給客戶端的回應,其中包含一些相關的資訊。


可以透過瀏覽器的 DevTools 的 Network 查看 response 和 request 的相關資訊 (headers 等)。


Content-Type 很重要

瀏覽器會根據 server 給的 Content-Type 解析檔案,會影響呈現的結果。

舉例:寫入<h1>hello!!</h1>,把 Content-Type 分別寫 text/plaintext/html,最終分別得到 <h1>hello!!</h1>hello!!。(前後程式碼省略,實際寫記得打)

...
response.writeHead(200, {"Content-Type": "text/plain"});
response.write('<h1>hello!!</h1>');
...
...
response.writeHead(200, {"Content-Type": "text/html"});
response.write('<h1>hello!!</h1>');
...


8080 port 通訊埠

伺服器裡面的其中一個軟體,它會佔據電腦中其中一個 port,透過這個 port 來開啟應用程式的內容。

AI 解釋:電腦就像一棟大樓,8080 就像是這棟大樓的其中一個房間號碼。當你想要訪問不同的網路服務時,就需要知道我們要存取哪一個「房間號碼」。通常網頁瀏覽服務會使用 80 號房間,這是一個默認和眾所周知的房間號。但有時候 80 號房間已經被其他服務佔用了,這時我們就需要使用備用的房間號碼,比如 8080 號房間。

有些埠號已經被其他協定和服務佔據了,可以查看通訊埠列表


學習資源


主要放程式學習筆記,分享 Creative Coding 相關內容、作品
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Global 物件和 node 模組特性的介紹
在終端機試玩 或 VS Code 執行 JS 檔
V8 由 Google 開發的開源 JavaScript 引擎
幾乎所有的網站都一定會用到圖片和 icon,甚至可能會需要載入大量的圖片,它們也是網站中佔比最多的資源,所以透過優化這些圖片資源,就可能帶來很大的效能提升。
Code Minimize & Uglify (程式碼最小化和醜化)
Global 物件和 node 模組特性的介紹
在終端機試玩 或 VS Code 執行 JS 檔
V8 由 Google 開發的開源 JavaScript 引擎
幾乎所有的網站都一定會用到圖片和 icon,甚至可能會需要載入大量的圖片,它們也是網站中佔比最多的資源,所以透過優化這些圖片資源,就可能帶來很大的效能提升。
Code Minimize & Uglify (程式碼最小化和醜化)
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
對於人類狀態(human condition)以及身為主體的意義為何的關注,貫穿溫尼考特的所有作品。從非常早期開始,他的所有提問就全是關於生命的意義,以及這意義當中的什麼讓生命值得去活。他在作品中逐漸把精神分析牢牢放進人類天性(human nature)的框架裡。
Thumbnail
許多創業者會把有限的資源,投放在與「核心競爭力」無關的「核心能力」上。如果這兩者不能妥善匹配,對大企業造成的傷害還不是很大;但是對新創或小企業造成的傷害,可能就是公司滅亡。
Thumbnail
核心中的核心肌肉,你覺得是誰呢? 或許有些人認為是腹肌、有些人認為是足弓、有些人認為是...... 其實,你們都沒有錯哦!看從什麼角度來切入。
Thumbnail
身為一個寫作者,多去找別人的經驗做為參考座標是很重要的,但若完全相信,是很危險的一件事。因此老師強調寫作者必須做到別相信任何人。
Thumbnail
「整理」這件事其實就是一個「解決問題」的過程,只是往往我們在談的整理多半是有關「生活環境」的面向,有些人可能很會解決工作面向的問題,但一換成生活面向的問題時卻常常卡住,這不是很奇怪嗎(XD)! 我們猜想很多人在學習不同領域的事物時,很容易會認為不同領域的方法和技術一定是不一樣的,但很多道理可能都是
Thumbnail
有很多原因都會產生腰部疼痛 其中最常見的就是腰椎椎間盤突出造成的神經壓迫 這樣的疼痛就會讓表層大肌肉僵硬,深層小肌肉無力 進而讓腰椎變的歪歪的、晃晃的 更容易產生椎間盤突出,再度造成壓迫 這就是貝克常講的「惡性循環」 如果不想辦法解決,問題只會越來越糟 所以當你找過物理治療師幫你評估、做治療
Thumbnail
運動肺功能檢查在心臟復健領域是一個重要的檢查,不僅可以算出個人化的運動處方,還可以探查運動限制,是一般靜態檢查無法取代的資料。近年來,隨著心衰竭的照護逐漸完整,這個檢查也漸漸備受重視,因為可以用
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
對於人類狀態(human condition)以及身為主體的意義為何的關注,貫穿溫尼考特的所有作品。從非常早期開始,他的所有提問就全是關於生命的意義,以及這意義當中的什麼讓生命值得去活。他在作品中逐漸把精神分析牢牢放進人類天性(human nature)的框架裡。
Thumbnail
許多創業者會把有限的資源,投放在與「核心競爭力」無關的「核心能力」上。如果這兩者不能妥善匹配,對大企業造成的傷害還不是很大;但是對新創或小企業造成的傷害,可能就是公司滅亡。
Thumbnail
核心中的核心肌肉,你覺得是誰呢? 或許有些人認為是腹肌、有些人認為是足弓、有些人認為是...... 其實,你們都沒有錯哦!看從什麼角度來切入。
Thumbnail
身為一個寫作者,多去找別人的經驗做為參考座標是很重要的,但若完全相信,是很危險的一件事。因此老師強調寫作者必須做到別相信任何人。
Thumbnail
「整理」這件事其實就是一個「解決問題」的過程,只是往往我們在談的整理多半是有關「生活環境」的面向,有些人可能很會解決工作面向的問題,但一換成生活面向的問題時卻常常卡住,這不是很奇怪嗎(XD)! 我們猜想很多人在學習不同領域的事物時,很容易會認為不同領域的方法和技術一定是不一樣的,但很多道理可能都是
Thumbnail
有很多原因都會產生腰部疼痛 其中最常見的就是腰椎椎間盤突出造成的神經壓迫 這樣的疼痛就會讓表層大肌肉僵硬,深層小肌肉無力 進而讓腰椎變的歪歪的、晃晃的 更容易產生椎間盤突出,再度造成壓迫 這就是貝克常講的「惡性循環」 如果不想辦法解決,問題只會越來越糟 所以當你找過物理治療師幫你評估、做治療
Thumbnail
運動肺功能檢查在心臟復健領域是一個重要的檢查,不僅可以算出個人化的運動處方,還可以探查運動限制,是一般靜態檢查無法取代的資料。近年來,隨著心衰竭的照護逐漸完整,這個檢查也漸漸備受重視,因為可以用