以下是原文翻译成繁體中文的Markdown格式内容:

Node.js - Web Module

# Node.js - Web Module

## 什麼是網頁伺服器?

你好,有志於成為程序員的各位!今天,我們將進入網頁伺服器的精彩世界。將網頁伺服器想像成一位總是準備好為您提供所需書籍(在我們的例子中,是網頁)的友好圖書管理員。

網頁伺服器是一個能夠回應網頁瀏覽器請求的軟件。當您在瀏覽器中輸入一個URL時,您實際上是請求一個網頁伺服器給您一個特定的網頁。然後伺服器會取得該頁面並將其傳回給您的瀏覽器。

讓我們用一個簡單的比喻來解釋:

1. 您(客戶)走進圖書館(互聯網)。
2. 您請求圖書管理員(網頁伺服器)提供一本特定的書(一個網頁)。
3. 圖書管理員取得書並交給您。
4. 您閱讀書籍(您的瀏覽器顯示網頁)。

簡單吧?現在,讓我們看看如何使用Node.js創建我們自己的網頁伺服器!

## 網頁應用程序架構

在我們開始編程之前,讓我們了解網頁應用程序的基礎架構。這就像在建造房屋之前了解房屋的設計圖。

一個典型的網頁應用程序主要由三個主要組件組成:

1. **客戶端**:這通常是瀏覽器(如Chrome或Firefox),用於向伺服器發送請求。
2. **伺服器**:這是我們Node.js應用程序運行的位置。它接收來自客戶端的請求並發送回應。
3. **數據庫**:這是我們存儲和检索數據的地方。我們不會在這個教程中涵蓋數據庫,但知道它們存在是有用的!

以下是一個簡單的圖表來說明這些組件:

[客戶端] <---> [伺服器] <---> [數據庫]


箭頭代表這些組件之間數據的流動。酷炫吧?

## 使用Node創建網頁伺服器

現在,讓我們動手使用Node.js創建一個簡單的網頁伺服器。別擔心如果您從未編過程序——我們會一步步來!

首先,我們需要使用Node內置的`http`模塊。這個模塊讓我們能夠創建一個可以處理HTTP請求的伺服器。

```javascript
const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, World!');
});

server.listen(3000, 'localhost', () => {
  console.log('Server running at http://localhost:3000/');
});

讓我們來分解這段代碼:

  1. 我們requirehttp模塊,這給我們提供了創建伺服器的工具。
  2. 我們使用http.createServer()來創建一個新的伺服器。這個函數接受一個回調函數,該函數將在每次對伺服器發出請求時執行。
  3. 在回調函數中,我們設置狀態碼為200(意味著"OK"),設置內容類型為純文本,並將"Hello, World!"作為回應發送。
  4. 最後,我們告訴伺服器在本地主機的3000端口上監聽。

要運行這個伺服器,將代碼保存到一個文件中(我們稱之為server.js),打開終端,導航到包含文件的目錄,並運行:

node server.js

現在,如果您打開瀏覽器並訪問http://localhost:3000,您應該會看到"Hello, World!"。恭喜您,您剛剛使用Node.js創建了您的第一個網頁伺服器!

使用Node創建網頁客戶端

現在,我們有了伺服器,讓我們創建一個能夠向其發送請求的客戶端。在現實世界中,這通常會是一個瀏覽器,但我們也可以使用Node.js創建一個簡單的客戶端。

以下是一個簡單的客戶端,它向我們的伺服器發送GET請求:

const http = require('http');

const options = {
  hostname: 'localhost',
  port: 3000,
  path: '/',
  method: 'GET'
};

const req = http.request(options, (res) => {
  console.log(`statusCode: ${res.statusCode}`);

  res.on('data', (d) => {
    process.stdout.write(d);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

讓我們來分解這段代碼:

  1. 我們再次requirehttp模塊。
  2. 我們設置了我們請求的選項,包括主機名、端口、路徑和方法。
  3. 我們使用http.request()創建請求,傳入我們的選項和一個回調函數。
  4. 在回調函數中,我們記錄狀態碼,並設置一個事件監聽器來處理從伺服器接收到的數據。
  5. 我們還設置了一個錯誤處理程序。
  6. 最後,我們調用req.end()來發送請求。

將此代碼保存到名為client.js的文件中,並使用node client.js運行它。您應該會在終端中看到狀態碼(200)和伺服器發回的消息("Hello, World!")。

結論

恭喜您!您剛剛使用Node.js創建了您的第一個網頁伺服器和客戶端。這只是冰山一角,但這是一個很好的開始。隨著您在網頁開發道路上的不斷前行,您將學會如何處理不同類型的請求、提供HTML頁面、與數據庫交互等等。

記住,每個專家都曾經是個初學者。持續練習,持續學習,最重要的是,樂在其中!網頁開發的世界浩瀚而令人興奮,您已經踏出了第一步。開心編程!



| 方法 | 描述 |
|-------|-------------|
| `http.createServer()` | 創建一個新的HTTP伺服器 |
| `server.listen()` | 開始伺服器,使其聽取進來的請求 |
| `http.request()` | 向伺服器發送HTTP請求 |
| `res.statusCode` | 設置回應的HTTP狀態碼 |
| `res.setHeader()` | 設置回應頭 |
| `res.end()` | 向客戶端發送回應 |
| `req.on()` | 為請求設置事件監聽器 |

Credits: Image by storyset