核心模組 - 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
查看全部
發表第一個留言支持創作者!
Global 物件和 node 模組特性的介紹
在終端機試玩 或 VS Code 執行 JS 檔
V8 由 Google 開發的開源 JavaScript 引擎
幾乎所有的網站都一定會用到圖片和 icon,甚至可能會需要載入大量的圖片,它們也是網站中佔比最多的資源,所以透過優化這些圖片資源,就可能帶來很大的效能提升。
Code Minimize & Uglify (程式碼最小化和醜化)
Global 物件和 node 模組特性的介紹
在終端機試玩 或 VS Code 執行 JS 檔
V8 由 Google 開發的開源 JavaScript 引擎
幾乎所有的網站都一定會用到圖片和 icon,甚至可能會需要載入大量的圖片,它們也是網站中佔比最多的資源,所以透過優化這些圖片資源,就可能帶來很大的效能提升。
Code Minimize & Uglify (程式碼最小化和醜化)
你可能也想看
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
對於人類狀態(human condition)以及身為主體的意義為何的關注,貫穿溫尼考特的所有作品。從非常早期開始,他的所有提問就全是關於生命的意義,以及這意義當中的什麼讓生命值得去活。他在作品中逐漸把精神分析牢牢放進人類天性(human nature)的框架裡。
Thumbnail
許多創業者會把有限的資源,投放在與「核心競爭力」無關的「核心能力」上。如果這兩者不能妥善匹配,對大企業造成的傷害還不是很大;但是對新創或小企業造成的傷害,可能就是公司滅亡。
Thumbnail
核心中的核心肌肉,你覺得是誰呢? 或許有些人認為是腹肌、有些人認為是足弓、有些人認為是...... 其實,你們都沒有錯哦!看從什麼角度來切入。
Thumbnail
身為一個寫作者,多去找別人的經驗做為參考座標是很重要的,但若完全相信,是很危險的一件事。因此老師強調寫作者必須做到別相信任何人。
Thumbnail
「整理」這件事其實就是一個「解決問題」的過程,只是往往我們在談的整理多半是有關「生活環境」的面向,有些人可能很會解決工作面向的問題,但一換成生活面向的問題時卻常常卡住,這不是很奇怪嗎(XD)! 我們猜想很多人在學習不同領域的事物時,很容易會認為不同領域的方法和技術一定是不一樣的,但很多道理可能都是
Thumbnail
有很多原因都會產生腰部疼痛 其中最常見的就是腰椎椎間盤突出造成的神經壓迫 這樣的疼痛就會讓表層大肌肉僵硬,深層小肌肉無力 進而讓腰椎變的歪歪的、晃晃的 更容易產生椎間盤突出,再度造成壓迫 這就是貝克常講的「惡性循環」 如果不想辦法解決,問題只會越來越糟 所以當你找過物理治療師幫你評估、做治療
Thumbnail
運動肺功能檢查在心臟復健領域是一個重要的檢查,不僅可以算出個人化的運動處方,還可以探查運動限制,是一般靜態檢查無法取代的資料。近年來,隨著心衰竭的照護逐漸完整,這個檢查也漸漸備受重視,因為可以用
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
對於人類狀態(human condition)以及身為主體的意義為何的關注,貫穿溫尼考特的所有作品。從非常早期開始,他的所有提問就全是關於生命的意義,以及這意義當中的什麼讓生命值得去活。他在作品中逐漸把精神分析牢牢放進人類天性(human nature)的框架裡。
Thumbnail
許多創業者會把有限的資源,投放在與「核心競爭力」無關的「核心能力」上。如果這兩者不能妥善匹配,對大企業造成的傷害還不是很大;但是對新創或小企業造成的傷害,可能就是公司滅亡。
Thumbnail
核心中的核心肌肉,你覺得是誰呢? 或許有些人認為是腹肌、有些人認為是足弓、有些人認為是...... 其實,你們都沒有錯哦!看從什麼角度來切入。
Thumbnail
身為一個寫作者,多去找別人的經驗做為參考座標是很重要的,但若完全相信,是很危險的一件事。因此老師強調寫作者必須做到別相信任何人。
Thumbnail
「整理」這件事其實就是一個「解決問題」的過程,只是往往我們在談的整理多半是有關「生活環境」的面向,有些人可能很會解決工作面向的問題,但一換成生活面向的問題時卻常常卡住,這不是很奇怪嗎(XD)! 我們猜想很多人在學習不同領域的事物時,很容易會認為不同領域的方法和技術一定是不一樣的,但很多道理可能都是
Thumbnail
有很多原因都會產生腰部疼痛 其中最常見的就是腰椎椎間盤突出造成的神經壓迫 這樣的疼痛就會讓表層大肌肉僵硬,深層小肌肉無力 進而讓腰椎變的歪歪的、晃晃的 更容易產生椎間盤突出,再度造成壓迫 這就是貝克常講的「惡性循環」 如果不想辦法解決,問題只會越來越糟 所以當你找過物理治療師幫你評估、做治療
Thumbnail
運動肺功能檢查在心臟復健領域是一個重要的檢查,不僅可以算出個人化的運動處方,還可以探查運動限制,是一般靜態檢查無法取代的資料。近年來,隨著心衰竭的照護逐漸完整,這個檢查也漸漸備受重視,因為可以用