Thư viện web components Lit đã gây ra cuộc tranh luận sôi nổi trong cộng đồng các nhà phát triển, với những thảo luận cho thấy cả những người ủng hộ nhiệt tình lẫn những người chỉ trích gay gắt framework nhẹ này, vốn hứa hẹn sẽ đơn giản hóa việc phát triển web component.
Thông số kỹ thuật thư viện Lit:
- Kích thước bundle: ~5KB (đã minified và nén)
- Dựa trên các tiêu chuẩn Web Components
- Hỗ trợ reactive properties và declarative templates
- Sử dụng Shadow DOM mặc định để phân vùng style
- Tương thích với TypeScript decorators (tùy chọn)
Shadow DOM tạo ra thách thức về khả năng tiếp cận
Một trong những mối quan ngại lớn nhất được các nhà phát triển nêu ra xoay quanh tác động của Shadow DOM đối với các tính năng khả năng tiếp cận. Bản chất có phạm vi của Shadow DOM phá vỡ các mẫu khả năng tiếp cận truyền thống, đặc biệt ảnh hưởng đến các mối quan hệ phần tử dựa vào tham chiếu ID. Điều này tạo ra vấn đề với các thuộc tính ARIA như describedby
và labelledby
khi các phần tử cần tham chiếu đến các component qua ranh giới shadow. Người duy trì Lit đã thừa nhận hạn chế này, lưu ý rằng chức năng mục tiêu tham chiếu ARIA để làm cho các tham chiếu dựa trên ID hoạt động qua các shadow root vẫn còn thiếu trong các tiêu chuẩn web.
Shadow DOM: Một tiêu chuẩn web đóng gói các style và markup của component, ngăn chúng ảnh hưởng hoặc bị ảnh hưởng bởi phần còn lại của trang.
Các tiêu chuẩn Web sắp tới giải quyết các hạn chế của Lit:
- Tín hiệu JavaScript gốc (đề xuất TC39)
- Đăng ký phần tử tùy chỉnh có phạm vi (đang phát hành trên Safari, Chrome tiếp theo)
- Shadow root có thể định dạng mở
- CSS Modules (đang phát hành trên Chrome, sắp có trên Firefox)
- Mục tiêu tham chiếu ARIA cho khả năng truy cập cross-shadow DOM
Các nhà phát triển đặt câu hỏi về sự cần thiết của lớp trừu tượng bổ sung
Một phân khúc ngày càng lớn của các nhà phát triển cho rằng các tiêu chuẩn web hiện đại đã phát triển đủ để làm cho các thư viện như Lit trở nên không cần thiết. Một số người thích viết vanilla web components trực tiếp, viện dẫn lợi ích của việc tránh các phụ thuộc framework và chu kỳ nâng cấp. Tuy nhiên, những người ủng hộ phản bác rằng Lit cung cấp các lớp trừu tượng có giá trị cho các mẫu phổ biến như reactive properties và declarative templates, giảm mã boilerplate mà các nhà phát triển sẽ phải tự triển khai.
Sự phát triển của Framework gây tranh cãi
Các nhà phê bình đã chỉ ra rằng Lit dường như đang đi theo con đường tương tự như React, dần dần thêm các tính năng giống framework như quản lý context và các quy tắc cú pháp tùy chỉnh. Sự phát triển này đã thu hút sự chỉ trích từ những người ban đầu chấp nhận Lit vì tính đơn giản của nó. Cuộc tranh luận trở nên gay gắt hơn khi thảo luận về template directives và cú pháp thuộc tính đặc biệt, với một số người cho rằng những bổ sung này mâu thuẫn với triết lý ban đầu của thư viện là giữ gần với các tiêu chuẩn web.
Template directives: Các hàm đặc biệt trong Lit cung cấp chức năng nâng cao trong các HTML template, chẳng hạn như conditional rendering hoặc quản lý class.
Những câu chuyện thành công trong sản xuất phản bác các chỉ trích
Bất chấp những mối quan ngại, Lit đã tìm thấy thành công trong các ứng dụng sản xuất lớn. Thư viện này cung cấp sức mạnh cho các dự án quan trọng bao gồm Chrome DevTools , các component UI Firefox , Photoshop cho web, và giao diện Chrome OS . Những triển khai này chứng minh rằng Lit có thể xử lý các ứng dụng thực tế phức tạp một cách hiệu quả, cung cấp bằng chứng cho khả năng khả thi của nó trong môi trường doanh nghiệp.
Các Dự Án Lớn Sử Dụng Lit:
- Chrome DevTools
- Các thành phần giao diện người dùng của Firefox
- Photoshop cho web
- Chrome OS
- MDN ( Mozilla Developer Network )
- IBM Carbon Web Components
- Hệ thống thiết kế của Microsoft
Các tiêu chuẩn tương lai có thể giải quyết những hạn chế hiện tại
Người duy trì Lit đã tiết lộ công việc đang diễn ra về các đề xuất có thể giải quyết nhiều hạn chế hiện tại. Native signals trong JavaScript và reactive templating APIs đang được phát triển có thể cuối cùng làm cho các thư viện như Lit trở nên không cần thiết. Ngoài ra, các tiêu chuẩn web sắp tới như scoped custom element registries và open styleable shadow roots hứa hẹn sẽ giải quyết một số vấn đề tương tác hiện đang gây khó khăn cho web components.
Cuộc tranh luận xung quanh Lit phản ánh những căng thẳng rộng lớn hơn trong phát triển web giữa việc chấp nhận các tiêu chuẩn mới và duy trì quy trình phát triển thực tế. Trong khi một số nhà phát triển thích sự kiểm soát và đơn giản của các cách tiếp cận vanilla, những người khác đánh giá cao những lợi ích về năng suất mà các lớp trừu tượng được thiết kế tốt có thể mang lại. Khi các tiêu chuẩn web tiếp tục phát triển, vai trò của các thư viện như Lit có thể thay đổi, nhưng hiện tại, chúng vẫn là những công cụ thiết yếu cho nhiều nhóm phát triển xây dựng các ứng dụng dựa trên component.
Tham khảo: Lit