Đến nội dung chính
QK

Tailwind CSS v4: những thay đổi bạn cần biết trước khi migrate

QK

Quang Khải

5 tháng 5, 2026 · 7 phút đọc · 5.9k lượt xem

Đây là bài viết demo với nội dung placeholder. Khi kết nối với backend thực (Phase 2), nội dung sẽ được render từ Plate.js JSON thông qua @blog/editor/renderer.

Bối cảnh và vấn đề

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Phân tích codebase cũ

Sau khi audit codebase, chúng tôi phát hiện ra 3 vấn đề chính: circular dependencies giữa các module, business logic nằm rải rác trong controllers, và không có integration tests.

// Trước refactor — circular dep rất phổ biến
@Injectable()
export class PostService {
  constructor(
    private readonly userService: UserService, // circular!
    private readonly categoryService: CategoryService,
  ) {}
}

Kế hoạch refactor

Chúng tôi chọn Strangler Fig pattern — không rewrite từ đầu mà dần dần thay thế từng phần, đảm bảo production vẫn chạy liên tục trong suốt quá trình.

"The best refactoring is the one that ships without users noticing." — Team motto

Nội dung đầy đủ sẽ có khi Phase 2 hoàn thành và kết nối BE thực.

Bài viết có hữu ích không?

QK

Quang Khải

@khaido

Full-stack developer, viết về React, Node.js và mọi thứ liên quan đến web. Đang build sản phẩm tại Việt Nam.

Bình luận (55)

Đăng nhập để bình luận

Bài viết liên quan

Cùng chủ đề 🎨 Frontend

Next.js App Router sau 1 năm production: những điều không ai nói với bạn

RSC, Suspense, Server Actions — nghe có vẻ xịn nhưng khi đưa vào production thực tế thì không ít cạm bẫy. Tôi chia sẻ những vấn đề gặp phải với caching, hydration mismatch, và cách chúng tôi tổ chức data fetching pattern cho team 5 người.

QK
Quang Khải·9 phút đọc
231 41 134

8 TypeScript patterns tôi dùng hàng ngày (và lý do tại sao)

Từ discriminated unions để handle async states, branded types cho type-safe IDs, đến satisfies operator để type-check mà không mất inference. Đây là những pattern thực tế tôi áp dụng trong mọi dự án TypeScript.

QK
Quang Khải·10 phút đọc
421 63 287