1. CSS Modules là gì?

CSS Modules là một phương pháp viết CSS theo dạng module hóa, trong đó mỗi file CSS sẽ được tự động xử lý để tạo ra các className duy nhất (scoped CSS), giúp tránh xung đột và ghi đè CSS giữa các component.

Hiểu đơn giản:

CSS Modules giúp bạn chỉ áp dụng CSS cho đúng component, không ảnh hưởng toàn dự án.

Ví dụ tên class gốc:

.title { ... }

Khi build sẽ thành:

title__3jd8s

-> Nhờ đó không bao giờ trùng với CSS nơi khác.

2. Vì sao CSS Modules ngày càng phổ biến 2025?

Năm 2025, CSS Modules vẫn là lựa chọn hàng đầu trong front-end vì:

  • Tránh xung đột CSS (scoped CSS)
  • Không cần học cú pháp mới
  • Dùng tốt với React, Next.js, Vue, Svelte, Vite
  • Hỗ trợ biến, mixins qua PostCSS
  • Build nhanh, nhẹ, tối ưu SEO cho web

Trong dự án lớn, CSS Modules giúp quản lý code sạch, dễ bảo trì hơn nhiều so với CSS global.

3. Cách hoạt động của CSS Modules

Quy trình:

1. Bạn tạo file:

Component.module.css

2. Import vào component:

import styles from './Component.module.css';

3. Dùng như object:

<h1 className={styles.title}>Xin chào</h1>

4. Trình build chuyển class thành tên duy nhất.

4. Ưu điểm của CSS Modules

1. Tránh xung đột CSS (điểm mạnh nhất)

Các class trong CSS Modules chỉ có tác dụng trong đúng component sử dụng chúng.

2. Code dễ bảo trì, không lo override

Không còn tình trạng:

.button { ... } 
.button { ... } 

-> CSS ghi đè lung tung.

4.3. Tối ưu performance

So với CSS-in-JS, CSS Modules:

  • Build nhanh hơn
  • Nhẹ hơn
  • Không cần runtime JavaScript

4.4. Tích hợp tốt với mọi framework

Hoạt động mạnh với:

  • React
  • Next.js
  • Vite
  • Vue
  • Astro
  • Svelte

5. Cách sử dụng CSS Modules (Ví dụ React)

File: Home.module.css

.title {
  color: #0070f3;
  font-size: 24px;
}

File: Home.jsx

import styles from './Home.module.css';

export default function Home() {
  return <h1 className={styles.title}>CSS Modules Example</h1>;
}

6. Cách dùng CSS Modules trong Next.js 2025

Next.js hỗ trợ mặc định, chỉ cần tạo file:

Button.module.css

Import bình thường:

import styles from './Button.module.css';

export default function Button() {
  return <button className={styles.btn}>Click</button>;
}

Không cần cài đặt thêm.

7. So sánh CSS Modules vs CSS-in-JS (Styled Components)

Tiêu chí CSS Modules CSS-in-JS
Hiệu năng ⭐ Rất nhanh Chậm hơn
Runtime JS ❌ Không cần ✅Cần
Gọn nhẹ
Học dễ Trung bình
Tái sử dụng

Kết luận: 2025 → CSS Modules vẫn là lựa chọn tối ưu cho hiệu năng + sự đơn giản.

8. Khi nào nên dùng CSS Modules?

Bạn nên dùng nếu:

  • Làm dự án React/Next.js muốn CSS ổn định
  • Không muốn học thêm nhiều syntax
  • Tập trung hiệu năng Web
  • Làm UI với design system tách rõ component

9. Kết luận

CSS Modules là cách viết CSS hiện đại, đơn giản và hiệu quả nhất 2025. Nó giúp code sạch, tránh xung đột, tăng tốc độ build và tối ưu hiệu năng trang web. Đối với người mới học React hoặc Frontend, CSS Modules là lựa chọn lý tưởng để bắt đầu.