Node.js - Mô-đun Web

Web Server là gì?

Xin chào các bạn đang học lập trình! Hôm nay, chúng ta sẽ cùng khám phá thế giới thú vị của các máy chủ web. Hãy tưởng tượng một máy chủ web như một thủ thư thân thiện luôn sẵn sàng đưa cho bạn cuốn sách (hoặc trong trường hợp của chúng ta, trang web) mà bạn đang tìm kiếm.

Node.js - Web Module

Một máy chủ web là một phần mềm phản hồi các yêu cầu từ các trình duyệt web. Khi bạn gõ một URL vào trình duyệt của mình, bạn thực chất đang yêu cầu một máy chủ web cung cấp cho bạn một trang web cụ thể. Máy chủ sau đó sẽ lấy trang đó và gửi nó trở lại cho trình duyệt của bạn.

Hãy phân tích nó với một ví dụ đơn giản:

  1. Bạn (client) bước vào thư viện (mạng internet).
  2. Bạn yêu cầu thủ thư (máy chủ web) một cuốn sách cụ thể (trang web).
  3. Thủ thư lấy cuốn sách và đưa cho bạn.
  4. Bạn đọc cuốn sách (trình duyệt của bạn hiển thị trang web).

Đơn giản phải không? Bây giờ, hãy cùng xem cách chúng ta có thể tạo ra máy chủ web riêng của mình bằng Node.js!

Kiến trúc Ứng dụng Web

Trước khi bắt đầu lập trình, hãy hiểu cấu trúc cơ bản của một ứng dụng web. Điều này giống như hiểu bản vẽ của một ngôi nhà trước khi xây dựng nó.

Một ứng dụng web điển hình bao gồm ba thành phần chính:

  1. Client: Thường là một trình duyệt web (như Chrome hoặc Firefox) gửi yêu cầu đến máy chủ.
  2. Server: Đây là nơi ứng dụng Node.js của chúng ta chạy. Nó nhận yêu cầu từ các client và gửi phản hồi lại.
  3. Database: Đây là nơi chúng ta lưu trữ và truy xuất dữ liệu. Chúng ta sẽ không đề cập đến cơ sở dữ liệu trong hướng dẫn này, nhưng biết chúng tồn tại là điều tốt!

Dưới đây là một sơ đồ đơn giản để minh họa điều này:

[Client] <---> [Server] <---> [Database]

Các mũi tên đại diện cho luồng dữ liệu giữa các thành phần. Thật tuyệt phải không?

Tạo máy chủ web bằng Node

Bây giờ, hãy cùng làm việc thực tế và tạo một máy chủ web đơn giản bằng Node.js. Đừng lo lắng nếu bạn chưa bao giờ viết mã trước đây - chúng ta sẽ cùng nhau qua từng bước!

Đầu tiên, chúng ta cần sử dụng mô-đun http có sẵn trong Node. Mô-đun này cho phép chúng ta tạo một máy chủ có thể xử lý các yêu cầu HTTP.

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/');
});

Hãy phân tích nó:

  1. Chúng ta require mô-đun http, cung cấp cho chúng ta các công cụ để tạo một máy chủ.
  2. Chúng ta sử dụng http.createServer() để tạo một máy chủ mới. Hàm này nhận một hàm callback sẽ được thực thi mỗi khi có yêu cầu đến máy chủ.
  3. Trong hàm callback, chúng ta đặt mã trạng thái là 200 (tức là "OK"), đặt loại nội dung là văn bản thô và gửi "Hello, World!" 作为响应.
  4. Cuối cùng, chúng ta bảo máy chủ lắng nghe trên cổng 3000 trên localhost.

Để chạy máy chủ này, lưu mã trong một tệp (gọi là server.js), mở terminal, điều hướng đến thư mục chứa tệp và chạy:

node server.js

Bây giờ, nếu bạn mở trình duyệt và truy cập http://localhost:3000, bạn nên thấy "Hello, World!" Chúc mừng, bạn vừa tạo ra máy chủ web đầu tiên của mình!

Tạo client web bằng Node

Bây giờ chúng ta đã có một máy chủ, hãy tạo một client có thể gửi yêu cầu đến nó. Trong thế giới thực, điều này thường là một trình duyệt web, nhưng chúng ta có thể tạo một client đơn giản bằng Node.js.

Dưới đây là một client đơn giản gửi yêu cầu GET đến máy chủ của chúng ta:

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();

Hãy phân tích nó:

  1. Chúng ta yêu cầu lại mô-đun http.
  2. Chúng ta thiết lập các tùy chọn cho yêu cầu của mình, bao gồm tên miền, cổng, đường dẫn và phương thức.
  3. Chúng ta tạo một yêu cầu bằng cách sử dụng http.request(), truyền các tùy chọn và một hàm callback.
  4. Trong hàm callback, chúng ta ghi mã trạng thái và thiết lập một bộ监听 sự kiện 'data' để ghi dữ liệu nhận được từ máy chủ.
  5. Chúng ta cũng thiết lập một bộ xử lý lỗi.
  6. Cuối cùng, chúng ta gọi req.end() để gửi yêu cầu.

Lưu mã này trong một tệp gọi là client.js và chạy nó với node client.js. Bạn nên thấy mã trạng thái (200) và thông báo từ máy chủ ("Hello, World!") được in ra trong terminal.

Kết luận

Chúc mừng! Bạn vừa tạo ra máy chủ và client web đầu tiên của mình bằng Node.js. Đây chỉ là phần nổi của tảng băng, nhưng nó là một bước khởi đầu tuyệt vời. Khi bạn tiếp tục hành trình trong lĩnh vực phát triển web, bạn sẽ học cách xử lý các loại yêu cầu khác nhau, phục vụ các trang HTML, làm việc với cơ sở dữ liệu và nhiều hơn nữa.

Nhớ rằng, mỗi chuyên gia từng là một người mới bắt đầu. Hãy tiếp tục thực hành, học hỏi và quan trọng nhất là hãy vui vẻ! Thế giới phát triển web là rộng lớn và thú vị, và bạn đã chính thức bước vào nó. Chúc bạn may mắn với việc lập trình!

Credits: Image by storyset