(+84) 236.3827111 ex. 402

Express.js


🧭 Tổng quan chi tiết về Express.js

1. Express.js là gì?

Express.js (thường gọi ngắn gọn là Express) là một framework web dành cho Node.js, giúp lập trình viên xây dựng ứng dụng web và API một cách nhanh chóng, linh hoạt và tối ưu hơn.

Nói cách khác, nếu Node.js là “động cơ” (engine) giúp chạy JavaScript phía server, thì Express.js là “bộ khung” giúp bạn dễ dàng tổ chức, định tuyến, quản lý request/response và phát triển ứng dụng web.

  • 🏗️ Ngôn ngữ: JavaScript

  • 🚀 Nền tảng: Node.js

  • 📦 Giấy phép: MIT

  • 👨‍💻 Tác giả: TJ Holowaychuk (phát hành lần đầu năm 2010)


2. Tại sao nên dùng Express.js?

Express được coi là framework phổ biến nhất của Node.js, bởi vì:

Lợi ích Mô tả
Nhanh & nhẹ Express rất gọn, không có quá nhiều lớp trung gian, chạy nhanh và linh hoạt.
🧩 Middleware linh hoạt Hỗ trợ middleware – cho phép xử lý request/response một cách tùy chỉnh.
🗺️ Routing mạnh mẽ Cung cấp hệ thống định tuyến (Router) dễ dùng, giúp quản lý URL, REST API, v.v.
🔌 Tích hợp dễ dàng Dễ tích hợp với database (MongoDB, MySQL, PostgreSQL…), template engine, session, JWT,…
🌐 Cộng đồng lớn Có hàng nghìn module mở rộng, tài liệu phong phú và hỗ trợ mạnh mẽ từ cộng đồng.

3. Cài đặt Express.js

🧱 Yêu cầu:

  • Node.js (>= 14)

  • NPM (Node Package Manager)

⚙️ Cách cài:


mkdir myapp cd myapp npm init -y npm install express

🚀 Tạo server đầu tiên:


// file: app.js const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Xin chào từ Express.js!'); }); app.listen(port, () => { console.log(`Server đang chạy tại http://localhost:${port}`); });

Chạy lệnh:


node app.js

→ Mở trình duyệt truy cập: http://localhost:3000


4. Cấu trúc dự án Express phổ biến


myapp/ │ ├── app.js # File chính khởi chạy ứng dụng ├── package.json # Thông tin dự án và dependency ├── /routes # Các định tuyến (router) │ ├── index.js │ └── users.js ├── /controllers # Chứa logic xử lý ├── /models # Mô hình dữ liệu (database) ├── /middlewares # Các middleware tùy chỉnh └── /public # File tĩnh (CSS, JS, hình ảnh)

5. Khái niệm cốt lõi trong Express.js

🔹 a. Middleware

Middleware là hàm trung gian xử lý request trước khi gửi response.

Ví dụ:


app.use((req, res, next) => { console.log('Request Time:', Date.now()); next(); // chuyển tiếp cho middleware tiếp theo });

🔹 b. Router

Router giúp định nghĩa các đường dẫn (route) và hành vi khi người dùng truy cập chúng.


app.get('/home', (req, res) => { res.send('Trang chủ'); }); app.post('/user', (req, res) => { res.send('Tạo người dùng mới'); });

🔹 c. Request & Response

  • Request (req): chứa thông tin từ client gửi lên (body, query, params,…)

  • Response (res): dùng để gửi phản hồi về client.


6. Các tính năng quan trọng

Tính năng Mô tả
🧭 Routing Quản lý đường dẫn URL dễ dàng bằng app.get(), app.post(), app.put(), app.delete()
🪄 Middleware Xử lý chuỗi yêu cầu phức tạp (như xác thực, logging, parsing JSON, xử lý lỗi,…)
💾 Static files Cung cấp file tĩnh (CSS, hình ảnh, JS) qua express.static()
🗂️ Template engines Hỗ trợ EJS, Pug, Handlebars để render giao diện động
🔐 Session & Authentication Hỗ trợ xác thực (Passport.js, JWT, cookie-session)
🧮 API RESTful Dễ dàng tạo REST API cho ứng dụng frontend (React, Vue, Angular)

7. Ví dụ ứng dụng REST API cơ bản


const express = require('express'); const app = express(); app.use(express.json()); // để đọc JSON body // Dữ liệu giả lập let users = [ { id: 1, name: 'Minh' }, { id: 2, name: 'Lan' } ]; // Lấy danh sách user app.get('/users', (req, res) => { res.json(users); }); // Thêm user mới app.post('/users', (req, res) => { const newUser = req.body; users.push(newUser); res.status(201).json(newUser); }); // Cập nhật user app.put('/users/:id', (req, res) => { const id = parseInt(req.params.id); const index = users.findIndex(u => u.id === id); if (index !== -1) { users[index] = req.body; res.json(users[index]); } else { res.status(404).send('Không tìm thấy người dùng'); } }); // Xóa user app.delete('/users/:id', (req, res) => { users = users.filter(u => u.id !== parseInt(req.params.id)); res.status(204).send(); }); app.listen(3000, () => console.log('API chạy tại cổng 3000'));

8. Kết hợp với cơ sở dữ liệu

Express không ràng buộc vào loại CSDL cụ thể nào, bạn có thể dùng:

CSDL Thư viện gợi ý
MongoDB Mongoose
MySQL / PostgreSQL Sequelize
Firebase Firebase SDK

Ví dụ dùng MongoDB:


const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mydb');

9. Xử lý lỗi trong Express

Express hỗ trợ middleware xử lý lỗi toàn cục:


app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Đã xảy ra lỗi!'); });

10. Ưu điểm & Hạn chế

✅ Ưu điểm:

  • Cấu trúc đơn giản, dễ học

  • Tốc độ xử lý cao

  • Linh hoạt, dễ mở rộng

  • Tương thích tốt với nhiều công nghệ web hiện đại

⚠️ Hạn chế:

  • Không có cấu trúc cứng nhắc → người mới dễ viết code lộn xộn

  • Cần thêm thư viện bên ngoài cho nhiều tính năng (session, auth, validation, ORM, …)


11. Các framework mở rộng từ Express

Nhiều framework hiện đại được xây dựng dựa trên Express, ví dụ:

  • 🧱 NestJS – hướng đối tượng, cấu trúc mô-đun, dùng TypeScript.

  • ⚙️ Sails.js – hỗ trợ MVC và real-time socket.nene

  • 💡 LoopBack – mạnh về xây dựng REST API tự động.


12. Kết luận

Express.js là một trong những framework quan trọng nhất trong hệ sinh thái Node.js, đóng vai trò nền tảng cho vô số ứng dụng web, REST API và dịch vụ backend hiện nay.

Dù K31 hay các K30, K29 thì các bạn sinh viên nên nắm vững Express là bước đầu tiên để tiến tới các hệ thống phức tạp hơn như NestJS, GraphQL, hay microservices.