0
0
Lập trình
TT

Tìm hiểu lại về tiêu chuẩn web: Web Components vs React

Đăng vào 8 tháng trước

• 6 phút đọc

Chủ đề:

KungFuTech

Giới thiệu

Trong bối cảnh phát triển web hiện nay, việc nắm vững các tiêu chuẩn web là điều cần thiết để tối ưu hóa quy trình phát triển ứng dụng. Bài viết này sẽ bàn về những quan niệm sai lầm mà nhiều nhà phát triển, đặc biệt là những người sử dụng React, thường gặp phải. Chúng ta sẽ khám phá cách Web Components có thể mang lại lợi ích cho phát triển UI, đồng thời so sánh với React.

Tại sao cần quay lại với tiêu chuẩn web?

Nỗi ám ảnh với React

React đã trở thành một phần không thể thiếu trong công việc của nhiều nhà phát triển. Nó mang lại một kiến trúc UI dựa trên component, giúp giảm thiểu độ phức tạp. Tuy nhiên, sự nổi bật này có thể khiến một số người quên đi các tiêu chuẩn web khác. Nhiều nhà phát triển có thể trở nên phụ thuộc vào hệ sinh thái của React, dẫn đến việc họ không còn khả năng tư duy bên ngoài mô hình của nó.

Sự phát triển của Web Components

Web Components là một tiêu chuẩn mới, cho phép chúng ta xây dựng các thành phần tái sử dụng mà không cần phụ thuộc vào một framework cụ thể. Được giới thiệu bởi W3C, Web Components cho phép phát triển các phần tử tùy chỉnh với cấu trúc DOM hoàn chỉnh. Điều này giúp cho việc phát triển trở nên linh hoạt hơn và có thể tương thích với nhiều công nghệ khác nhau.

So sánh Web Components và React

Tiêu chí Web Components React
Kiến trúc Dựa trên tiêu chuẩn web Dựa trên component
Tính độc lập Tương thích với bất kỳ thư viện JavaScript nào Phụ thuộc vào hệ sinh thái React
Hiệu suất Nhanh hơn do không sử dụng virtual DOM Phải xử lý lại cây component
Tương tác với DOM Trực tiếp tương tác với DOM Thông qua state và props
Quản lý kiểu dáng Scoped qua Shadow DOM Thường phụ thuộc vào CSS hoặc các thư viện khác

Ví dụ thực tế: Sử dụng Web Components với Swiper JS

Khi tôi làm việc với Swiper JS để hiển thị các bất động sản, tôi đã sử dụng một component phân trang để điều khiển swiper container chính. Trong React, việc giao tiếp giữa các component nhiều lớp sâu thường yêu cầu sử dụng context hoặc các công cụ quản lý state để tránh prop drilling. Tuy nhiên, với Web Components, tôi chỉ cần sử dụng .closest để tìm swiper-container gần nhất trong DOM của mình. Điều này cho phép tôi truy cập vào instance của swiper và điều khiển phân trang chỉ với một dòng code.

Lợi ích của Shadow DOM

Một điểm nổi bật khác của Web Components là khả năng sử dụng Shadow DOM. Với Shadow DOM, kiểu dáng của bạn được giới hạn trong phạm vi shadow DOM, giúp tránh xung đột kiểu dáng mà không cần tới các thư viện như Tailwind hay Styled Components. Bạn có thể viết các kiểu dáng đơn giản mà không cần bất kỳ JavaScript nào. Ví dụ, chỉ cần viết thẻ tùy chỉnh <blog-header> và chọn nó bằng:

css Copy
blog-header {
  /* kiểu dáng của bạn */
}

Điều này giúp bạn dễ dàng kiểm soát kiểu dáng mà không lo lắng về độ ưu tiên của CSS.

Tích hợp Web Components với hệ thống quản lý nội dung

Web Components rất phù hợp cho các hệ thống quản lý nội dung như AEM hoặc WordPress. Trong AEM, bạn chỉ cần viết HTML của phần tử tùy chỉnh trong HTL của component. Không cần cấu hình phức tạp với Webpack để tích hợp React và AEM. Trong WordPress, bạn chỉ cần viết phần tử tùy chỉnh dưới dạng HTML trong Gutenberg blocks hoặc template.

Hiệu suất và khả năng mở rộng

Web Components thường nhanh hơn vì chúng không sử dụng virtual DOM. Thư viện Lit, một thư viện giúp viết Web Components dễ dàng, chỉ render những thay đổi trực tiếp trong DOM. Bạn không cần lo lắng về các vấn đề liên quan đến cây component hay việc render lại như trong React.

Tương tác giữa React và Web Components

Bạn không cần phải từ bỏ React hoàn toàn. Bạn có thể kết hợp Web Components với React. Với sự hỗ trợ của React 19 và Next.js 15 cho các phần tử tùy chỉnh, việc này trở nên đơn giản hơn bao giờ hết. Trong một dự án tại công ty của mình, chúng tôi đã sử dụng Web Components trong ứng dụng Next.js để viết một số animation tùy chỉnh với Motion.

Những sai lầm thường gặp

Nhiều ý kiến phản đối về Web Components thường xuất phát từ việc các nhà phát triển không hiểu đúng về chúng. Họ có thể nghĩ rằng Web Components không thể kết hợp hoặc không hỗ trợ dữ liệu phong phú. Thực tế, những quan điểm này đều sai lầm, đến từ những người thiếu kinh nghiệm trong việc làm việc với Web Components.

Kết luận

Web Components là một sự trở lại với các tiêu chuẩn cơ bản và là cách để phát triển UI một cách hiệu quả hơn. Bạn nên xem xét việc sử dụng Web Components khi cần tạo các phần tử tùy chỉnh. Viết Web Components sẽ giúp bạn có được một kiến trúc component rõ ràng và dựa trên tiêu chuẩn trong việc làm việc với các hệ thống quản lý nội dung mà không cần nhiều công cụ phức tạp.

FAQ

1. Web Components có thể sử dụng với các thư viện JavaScript khác không?
Có, Web Components tương thích với bất kỳ thư viện JavaScript nào hỗ trợ tiêu chuẩn JavaScript.

2. Tại sao nên chọn Web Components thay vì React?
Web Components mang lại tính độc lập và hiệu suất tốt hơn, đồng thời giúp bạn tối ưu hóa quy trình phát triển.

3. Có cần học lại nhiều kiến thức nếu chuyển từ React sang Web Components không?
Không cần thiết, nhưng bạn nên tìm hiểu về các tiêu chuẩn và cách làm việc với DOM.

Hãy bắt đầu khám phá Web Components và áp dụng chúng vào các dự án của bạn ngay hôm nay!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào