Sự phức tạp ngày càng tăng của React gây ra cuộc tranh luận trong cộng đồng lập trình viên về sự phát triển của framework frontend

Nhóm Cộng đồng BigGo
Sự phức tạp ngày càng tăng của React gây ra cuộc tranh luận trong cộng đồng lập trình viên về sự phát triển của framework frontend

Một bài phê bình gần đây về React từ cộng đồng lập trình viên đã châm ngòi cho những cuộc thảo luận sôi nổi trong cộng đồng lập trình về sự phát triển và độ phức tạp của các framework frontend hiện đại. Cuộc tranh luận tập trung vào việc liệu trạng thái hiện tại của React có đại diện cho sự tiến bộ hay là một bước lùi so với các phương pháp phát triển web đơn giản hơn.

Dòng thời gian phát triển của Frontend Framework:

  • Thời đại jQuery: Thư viện thao tác DOM, trở thành tiêu chuẩn cho các ứng dụng web tương tác
  • Angular 1: Framework lớn đầu tiên cung cấp cấu trúc và ràng buộc dữ liệu hai chiều
  • Angular 2+: Viết lại hoàn toàn với TypeScript, độ phức tạp tăng lên
  • React: Phương pháp thư viện với JSX, ban đầu đơn giản hơn nhưng độ phức tạp của hệ sinh thái ngày càng tăng
  • Trạng thái hiện tại: Nhiều phương pháp cạnh tranh ( Vue , Svelte , v.v.) giải quyết các hạn chế của React

Vấn đề cốt lõi về độ phức tạp

Cuộc thảo luận này tiết lộ một sự căng thẳng cơ bản trong phát triển web hiện đại. Nhiều lập trình viên chỉ ra rằng quản lý trạng thái của React là nguồn gốc chính gây ra sự nhầm lẫn. Cách tiếp cận của framework này trong việc xử lý luồng dữ liệu, đặc biệt thông qua React Hooks , đã bị chỉ trích vì tạo ra những gì một số người coi là các biến toàn cục được tô vẽ với các quy ước đặt tên mang tính nghi lễ.

Các thành viên cộng đồng đã nêu bật những điểm đau cụ thể với useEffect , mà các lập trình viên thường sử dụng để khởi tạo component mặc dù nó được thiết kế cho các tác dụng phụ. Việc sử dụng sai này đã dẫn đến code phân tán logic qua nhiều hàm bất đồng bộ, tạo ra thứ mà một số người so sánh với vấn đề callback hell cũ mà các lập trình viên JavaScript nghĩ rằng họ đã giải quyết.

React Hooks: Một tính năng của React cho phép lập trình viên sử dụng state và các tính năng khác của React trong functional components useEffect: Một React Hook được sử dụng để thực hiện các tác dụng phụ trong functional components

Các Phê Bình Kỹ Thuật Chính Được Thảo Luận:

  • Quản Lý State: React Hooks tạo ra khả năng truy cập state giả toàn cục
  • Sử Dụng Sai useEffect: Sử dụng các hook side-effect cho việc khởi tạo component
  • Nhầm Lẫn Kiến Trúc: Sự phân tách không rõ ràng giữa các mẫu MVC và kiến trúc dựa trên component
  • Chi Phí Boilerplate: Tăng độ phức tạp của code cho các tác vụ đơn giản
  • Ràng Buộc Framework: Mỗi ứng dụng React đều yêu cầu các quyết định kiến trúc riêng biệt

Sự mệt mỏi với Framework và các giải pháp thay thế

Cuộc trò chuyện đã mở rộng ra ngoài React để bao gồm những thách thức phát triển frontend rộng lớn hơn. Các lập trình viên đang đặt câu hỏi liệu độ phức tạp có xuất phát từ chính các framework hay từ khó khăn vốn có của việc xây dựng giao diện người dùng tương tác.

Một số thành viên cộng đồng ủng hộ việc quay trở lại server-side rendering với việc sử dụng có chọn lọc các framework JavaScript chỉ khi thực sự cần thiết. Những người khác chỉ ra các giải pháp thay thế như Vue.js , được báo cáo là giải quyết nhiều điểm đau của React thông qua một hệ thống reactivity khác.

HTML5 như không có JS? Vậy là tải lại toàn bộ trang sau mỗi lần click?

Cuộc trao đổi này nắm bắt được sự căng thẳng đang diễn ra giữa tính đơn giản và chức năng mà định nghĩa các cuộc thảo luận phát triển web hiện đại.

Bức tranh tổng thể

Cuộc tranh luận cuối cùng đặt câu hỏi liệu cộng đồng phát triển web có làm phức tạp hóa quá mức những nhiệm vụ vốn nên đơn giản. Những người chỉ trích cho rằng việc xây dựng UI tương tác đã trở nên phức tạp một cách không cần thiết, với các framework cố gắng giải quyết những vấn đề có thể được giải quyết tốt hơn thông qua các phương pháp đơn giản hơn.

Tuy nhiên, những người bảo vệ các framework hiện đại chỉ ra rằng độ phức tạp thường xuất phát từ việc các lập trình viên sử dụng sai công cụ hơn là từ những khuyết điểm vốn có trong các framework. Họ lập luận rằng việc hiểu và triển khai đúng các công cụ này có thể dẫn đến các ứng dụng có thể bảo trì và mở rộng được.

Cuộc thảo luận phản ánh một cuộc trò chuyện rộng lớn hơn trong ngành về việc cân bằng trải nghiệm lập trình viên, hiệu suất ứng dụng và khả năng bảo trì lâu dài trong một hệ sinh thái tiếp tục phát triển nhanh chóng.

Tham khảo: React Still Feels Insane And No One Is Talking About It