hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • NodeJS
Tìm Hiểu Express.js và Lập Trình Đồng Bộ – Bất Đồng Bộ Trong Node.js

Tìm Hiểu Express.js và Lập Trình Đồng Bộ – Bất Đồng Bộ Trong Node.js

  • 08-05-2026
  • Toanngo92
  • 0 Comments

Mục lục

    • Giới thiệu
  • Express.js là gì?
  • Kiến trúc của Express.js
    • 1. View (Application Layer)
    • 2. Controller (Service Layer)
    • 3. Model (Data Access Layer)
  • Cách hoạt động của Express.js
  • Cài đặt Express.js
    • Bước 1: Cài Node.js
    • Bước 2: Tạo project
    • Bước 3: Khởi tạo package
    • Bước 4: Cài Express.js
    • Bước 5: Kiểm tra
  • Request và Response trong Express.js
    • Request Object
    • Response Object
  • GET và POST Method
    • GET
    • POST
  • Đồng bộ và Bất đồng bộ trong Node.js
  • Lập trình đồng bộ (Synchronous)
  • Lập trình bất đồng bộ (Asynchronous)
  • So sánh Đồng bộ và Bất đồng bộ
  • Callback trong Node.js
  • Promise trong Node.js
  • Async/Await
    • async
    • await
  • Event Loop trong Node.js
  • Vì sao Node.js mạnh?
  • Kết luận

Giới thiệu

Khi bắt đầu học lập trình backend với Node.js, hai kiến thức cực kỳ quan trọng mà bất kỳ lập trình viên nào cũng cần nắm là:

  • Framework Express.js
  • Cơ chế lập trình đồng bộ (Synchronous) và bất đồng bộ (Asynchronous)

Đây là nền tảng để xây dựng web server, API và các ứng dụng backend hiện đại với Node.js.


Express.js là gì?

Express.js là một framework tối giản dành cho Node.js, giúp lập trình viên xây dựng web application và API nhanh chóng hơn.

Framework này hỗ trợ:

  • Xử lý request/response
  • Tạo routing
  • Middleware
  • Phục vụ static files
  • Kết nối template engine
  • Xây dựng REST API

Express.js được sử dụng rất phổ biến vì:

  • Dễ học
  • Nhẹ
  • Linh hoạt
  • Hiệu năng tốt
  • Có cộng đồng lớn

Kiến trúc của Express.js

Express.js thường được tổ chức theo mô hình MVC:

1. View (Application Layer)

Là phần giao diện hiển thị cho người dùng.

Ví dụ:

  • HTML
  • EJS
  • Pug
  • Handlebars

2. Controller (Service Layer)

Đóng vai trò xử lý logic giữa View và Model.

Ví dụ:

  • Nhận dữ liệu từ form
  • Xử lý đăng nhập
  • Kiểm tra dữ liệu

3. Model (Data Access Layer)

Làm việc với dữ liệu và database.

Ví dụ:

  • MySQL
  • MongoDB
  • PostgreSQL

Cách hoạt động của Express.js

Quá trình hoạt động cơ bản:

  1. Server nhận request
  2. Router xử lý URL
  3. Middleware kiểm tra dữ liệu
  4. Handler function xử lý logic
  5. Trả response về client

Express.js hỗ trợ rất tốt việc xử lý middleware và routing nên giúp source code rõ ràng và dễ bảo trì hơn.


Cài đặt Express.js

Bước 1: Cài Node.js

Tải Node.js từ trang chính thức.


Bước 2: Tạo project

mkdir myapp
cd myapp

Bước 3: Khởi tạo package

npm init -y

Bước 4: Cài Express.js

npm install express

Bước 5: Kiểm tra

npm ls express

Request và Response trong Express.js

Request Object

Đối tượng request dùng để nhận dữ liệu từ client.

Một số thuộc tính phổ biến:

  • req.body
  • req.headers
  • req.params
  • req.query
  • req.method
  • req.url

Response Object

Đối tượng response dùng để gửi dữ liệu về client.

Một số method phổ biến:

  • res.send()
  • res.json()
  • res.render()
  • res.redirect()
  • res.status()

GET và POST Method

GET

Dùng để lấy dữ liệu.

Ví dụ:

app.get("/", (req, res) => {
    res.send("Hello World");
});

GET:

  • Dữ liệu nằm trên URL
  • Không phù hợp dữ liệu nhạy cảm
  • Có thể bookmark

POST

Dùng để gửi dữ liệu lên server.

Ví dụ:

app.post("/login", (req, res) => {
    res.send("Login Success");
});

POST:

  • Dữ liệu nằm trong body
  • Bảo mật hơn
  • Thường dùng với form

Đồng bộ và Bất đồng bộ trong Node.js

Một điểm rất đặc biệt của Node.js là cơ chế xử lý bất đồng bộ (Asynchronous Programming).


Lập trình đồng bộ (Synchronous)

Là cách thực thi tuần tự:

  • Task sau phải đợi task trước hoàn thành
  • Có thể gây block chương trình

Ví dụ:

console.log("Task 1");
console.log("Task 2");
console.log("Task 3");

Kết quả:

Task 1
Task 2
Task 3

Lập trình bất đồng bộ (Asynchronous)

Cho phép nhiều tác vụ chạy mà không chặn chương trình.

Phù hợp với:

  • Đọc file
  • Gọi API
  • Database
  • Network request

Ví dụ:

setTimeout(() => {
    console.log("Task Async");
}, 2000);

console.log("Task Main");

Kết quả:

Task Main
Task Async

So sánh Đồng bộ và Bất đồng bộ

AsynchronousSynchronous
Non-blockingBlocking
Chạy nhiều taskChạy tuần tự
Responsive tốtCó thể gây treo
Phù hợp I/OPhù hợp xử lý đơn giản

Callback trong Node.js

Callback là function truyền vào function khác.

Ví dụ:

function hello(callback) {
    console.log("Hello");
    callback();
}

hello(() => {
    console.log("Done");
});

Callback giúp xử lý asynchronous nhưng dễ gây:

  • Callback Hell
  • Code khó đọc

Promise trong Node.js

Promise giúp quản lý asynchronous tốt hơn.

Promise có 3 trạng thái:

  • Pending
  • Fulfilled
  • Rejected

Ví dụ:

const promise = new Promise((resolve, reject) => {
    resolve("Success");
});

promise.then(data => {
    console.log(data);
});

Async/Await

Đây là cách hiện đại nhất để xử lý asynchronous.

async

Khai báo function bất đồng bộ.

await

Đợi Promise hoàn thành.

Ví dụ:

async function test() {
    const data = await Promise.resolve("Hello");
    console.log(data);
}

test();

Ưu điểm:

  • Dễ đọc
  • Code sạch
  • Giống synchronous

Event Loop trong Node.js

Event Loop là cơ chế cực kỳ quan trọng của Node.js.

Nhiệm vụ:

  • Quản lý asynchronous tasks
  • Đảm bảo ứng dụng không bị block

Event Loop liên tục kiểm tra:

  • Callback Queue
  • Thread Pool
  • Event Queue

Để xử lý các tác vụ nền như:

  • File system
  • Database
  • API request

Vì sao Node.js mạnh?

Node.js mạnh vì:

  • Non-blocking I/O
  • Event Loop
  • Hiệu năng cao
  • Xử lý nhiều request cùng lúc
  • Phù hợp realtime application

Ví dụ:

  • Chat app
  • API server
  • Streaming
  • Realtime dashboard

Kết luận

Express.js giúp việc xây dựng backend với Node.js trở nên đơn giản và nhanh chóng hơn rất nhiều.

Trong khi đó, cơ chế asynchronous của Node.js giúp ứng dụng hoạt động hiệu quả, không bị block khi xử lý nhiều request cùng lúc.

Nếu muốn học backend hiện đại, Express.js và Async Programming là hai kiến thức bắt buộc cần nắm vững.

Hướng dẫn

Tạo CSDL mongodb với collection products với các document có các thuọc tính: Product Name, Price , Stock, Action Câu 1: Hiển thị danh sách sản phẩm có điều kiện lọc Tạo tệp index.php và viết mã PHP để hiển thị danh sách tất cả các sản phẩm, được sắp xếp theo giá theo thứ tự giảm dần Khi người dùng nhấp vào “Thêm sản phẩm”, họ sẽ điều hướng đến add_product.php Khi người dùng nhấp vào “chỉnh sửa”, họ sẽ điều hướng đến edit_product.php với tham số chứa id của sản phẩm hiện tại. Câu 2: Trong tệp add_product.php, Tạo biểu mẫu để nhập thông tin chi tiết về sản phẩm (tên, giá, kho) và xử lý việc chèn vào bảng sản phẩm. Xác thực rằng product_name là duy nhất. Đảm bảo giá lớn hơn 0 và kho ít nhất là 1. Câu 3: Trong edit_product.php Tạo một biểu mẫu để cập nhật tên, giá và kho của sản phẩm dựa trên id của sản phẩm đó. Đảm bảo id tồn tại trước khi cập nhật. Xác thực rằng product_name là duy nhất. Đảm bảo giá lớn hơn 0 và kho ít nhất là 1. Câu 4: Hiển thị danh sách sản phẩm có nút "Xóa" cho mỗi hàng. Hiển thị cảnh báo xác nhận bằng JavaScript trước khi xóa. Nếu sản phẩm có đơn hàng hiện tại, hãy ngăn chặn việc xóa và thông báo cảnh báo "Không thể xóa sản phẩm vì đã có trong đơn hàng!". Nếu không, hãy xóa sản phẩm khỏi cơ sở dữ liệu

Bài viết liên quan:

Tìm hiểu Modules, Packages và Built-in Modules trong Node.js
Giới thiệu tổng quan về ứng dụng Server Side
Cài đặt NodeJS trên môi trường windows

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Tìm Hiểu Express.js và Lập Trình Đồng Bộ – Bất Đồng Bộ Trong Node.js

Làm việc với cơ sở dữ liệu MongoDB

Tìm hiểu Modules, Packages và Built-in Modules trong Node.js

Cài đặt NodeJS trên môi trường windows

khái niệm React Context và chia sẻ state qua các component với React Context

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×