Cộng đồng phát triển Web tranh luận liệu độ phức tạp của CSS có thực sự là vấn đề

Nhóm Cộng đồng BigGo
Cộng đồng phát triển Web tranh luận liệu độ phức tạp của CSS có thực sự là vấn đề

Cộng đồng phát triển web đang tham gia vào một cuộc thảo luận sôi nổi về việc liệu chu trình bất tận của các framework và phương pháp luận CSS có thực sự giải quyết đúng vấn đề hay không. Trong khi các nhà phát triển tiếp tục tạo ra những công cụ mới như Tailwind CSS, các giải pháp CSS-in-JS, và các framework utility-first, nhiều người đang đặt câu hỏi liệu styling có bao giờ thực sự là vấn đề cản trở sự phát triển web hay không.

Sự phân chia giữa Document và Application

Một điểm tranh cãi chính tập trung vào mục đích thiết kế ban đầu của CSS. CSS được tạo ra để styling cho các tài liệu - những trang web đơn giản với tiêu đề, đoạn văn và bố cục cơ bản. Các ứng dụng web ngày nay là những thứ hoàn toàn khác biệt, có các hệ thống component phức tạp, theming động và giao diện tương tác mà CSS không được thiết kế để xử lý. Sự không khớp cơ bản này đã dẫn đến nhiều năm giải pháp tạm thời và các công cụ ngày càng phức tạp.

Các thành viên cộng đồng chỉ ra một góc nhìn lịch sử thú vị: các ứng dụng desktop từ hàng thập kỷ trước có thể thay đổi theme và nhất quán hơn so với các ứng dụng web ngày nay. Các hệ điều hành vào cuối những năm 1990 và đầu những năm 2000 cung cấp theming toàn hệ thống hoạt động trên tất cả các ứng dụng, điều gì đó có vẻ gần như kỳ diệu so với cách tiếp cận phân mảnh ngày nay khi mỗi trang web đều tái phát minh các pattern UI cơ bản.

Bối cảnh Lịch sử: Giao diện Desktop so với Web

Ứng dụng Desktop (thập niên 1990-2000):

  • Giao diện thống nhất trên toàn hệ thống cho tất cả ứng dụng
  • Các thành phần UI nhất quán
  • Giao diện có thể tùy chỉnh theo người dùng (giao diện Windows 98 , XP )
  • Các điều khiển chuẩn của hệ điều hành phù hợp với sở thích người dùng

Ứng dụng Web hiện đại:

  • Mỗi website có phong cách tùy chỉnh riêng
  • Giao diện người dùng không nhất quán
  • Tùy chọn tùy chỉnh cho người dùng hạn chế
  • Tái phát minh các mẫu UI cơ bản cho từng trang web

Câu hỏi lớn về độ phức tạp

Có lẽ cuộc tranh luận sôi nổi nhất xoay quanh việc liệu các ứng dụng web hiện đại có thực sự cần đến độ phức tạp của chúng hay không. Nhiều nhà phát triển cho rằng phần lớn các ứng dụng web về cơ bản là những form phức tạp - các thao tác CRUD được trang trí bằng giao diện fancy. Gmail, phần mềm thuế, công cụ quản lý dự án và cổng thông tin bảo hiểm y tế đều quy về việc điền form và gửi dữ liệu, nhưng chúng được xây dựng với các framework component phức tạp và hệ thống quản lý state.

99.9% các ứng dụng tôi tương tác chỉ là một loạt các thao tác CRUD đơn giản. Đôi khi chúng thêm vào độ phức tạp và sự hào nhoáng không cần thiết... nhưng khi nói đến các ứng dụng kinh doanh thực tế, tất cả chúng đều quy về việc cập nhật các bản ghi văn bản trong cơ sở dữ liệu với tốc độ con người.

Góc nhìn này thách thức toàn bộ tiền đề rằng các ứng dụng web cần các giải pháp styling phức tạp. Nếu hầu hết các ứng dụng là những form được tô vẽ, tại sao không sử dụng các form HTML truyền thống với CSS đơn giản?

Một minh họa về bố cục web dựa trên bảng thể hiện sự đơn giản của các ứng dụng web, phản ánh cuộc tranh luận về độ phức tạp của các thiết kế hiện đại
Một minh họa về bố cục web dựa trên bảng thể hiện sự đơn giản của các ứng dụng web, phản ánh cuộc tranh luận về độ phức tạp của các thiết kế hiện đại

Vòng luẩn quẩn của công cụ

Cuộc thảo luận cộng đồng tiết lộ sự thất vọng với việc thay đổi liên tục của các phương pháp luận CSS. Mỗi cách tiếp cận - dù là quy ước đặt tên BEM, CSS Modules, các utility class của Tailwind, hay các giải pháp CSS-in-JS - đều giải quyết các vấn đề cụ thể trong khi tạo ra những vấn đề mới. Các nhà phát triển thấy mình liên tục đánh giá các sự đánh đổi thay vì tập trung vào việc xây dựng tính năng.

Một số nhà phát triển có kinh nghiệm ủng hộ cách tiếp cận đơn giản hơn: chỉ sử dụng utility class cho layout, sử dụng scoped style cho component, và duy trì một tập hợp nhỏ các global style cho các element phổ biến. Chiến lược lai này dường như đang được các team mệt mỏi với độ phức tạp của framework quan tâm.

Đánh đổi của các Phương pháp CSS

Cách tiếp cận Ưu điểm Nhược điểm
BEM Khả năng dự đoán trong đặt tên Selector dài dòng
CSS Modules Phạm vi hoạt động Hạn chế trong theming thời gian chạy
Utility-first CSS ( Tailwind ) Lặp lại nhanh chóng Markup lộn xộn
CSS-in-JS Colocation và tính linh hoạt Chi phí hiệu suất thời gian chạy
Cascade Layers Kiểm soát tốt hơn Đường cong học tập của nhóm

Browser như một nền tảng ứng dụng

Một câu hỏi triết học sâu sắc hơn nổi lên về việc liệu các trình duyệt có nên phát triển theo cách khác hay không. Một số thành viên cộng đồng cho rằng nền tảng tập trung vào tài liệu của web khiến nó về cơ bản không phù hợp cho việc phát triển ứng dụng. Họ chỉ ra các công nghệ như WebAssembly có thể cung cấp con đường hướng tới trải nghiệm ứng dụng giống native hơn, thoát khỏi các ràng buộc của HTML và CSS.

Tuy nhiên, những người khác phản bác rằng sự tiến hóa của web từ các tài liệu đơn giản thành các ứng dụng phức tạp thực sự đã có lợi. Cách tiếp cận cải tiến dần dần đã tạo ra một nền tảng có thể truy cập, có thể kiểm tra và độc lập với nền tảng theo những cách mà các framework ứng dụng được xây dựng chuyên biệt thường không có.

Tìm kiếm sự bình yên với sự không hoàn hảo

Cuộc thảo luận cuối cùng gợi ý rằng cộng đồng phát triển web có thể được hưởng lợi từ việc chấp nhận rằng không có giải pháp hoàn hảo nào cho các thách thức styling. Thay vì tìm kiếm framework silver bullet tiếp theo, các nhà phát triển có thể được phục vụ tốt hơn bằng cách hiểu rõ các nhu cầu cụ thể của họ và có ý thức lựa chọn những sự đánh đổi mà họ sẵn sàng chấp nhận.

Cuộc tranh luận phản ánh một căng thẳng rộng lớn hơn trong phát triển web giữa mong muốn có các giải pháp đơn giản, có thể bảo trì và thực tế xây dựng các ứng dụng phức tạp, tương tác trên một nền tảng ban đầu không được thiết kế cho chúng. Khi cộng đồng tiếp tục vật lộn với những thách thức này, trọng tâm có thể đang chuyển từ việc tìm kiếm các công cụ hoàn hảo sang việc đưa ra những lựa chọn có chủ ý hơn về các thỏa hiệp có thể chấp nhận được.

Tham khảo: We Keep Reinventing CSS, but Styling Was Never the Problem

Cuộc trao đổi sâu sắc giữa con người và robot tượng trưng cho hành trình của cộng đồng phát triển web trong việc cân bằng giữa sự phức tạp và đơn giản trong các giải pháp tạo kiểu
Cuộc trao đổi sâu sắc giữa con người và robot tượng trưng cho hành trình của cộng đồng phát triển web trong việc cân bằng giữa sự phức tạp và đơn giản trong các giải pháp tạo kiểu