Web Components là ổn
- Cộng đồng phát triển web thường xuyên tranh luận về Web Components
- Ryan Carniato đã viết bài "Web Components Are Not the Future", và Cory LaViska đáp lại bằng bài "Web Components Are Not the Future — They’re the Present"
- Tác giả muốn giải quyết cuộc tranh luận này một cách ôn hòa
Hiệu năng
- Web Components dựa trên Custom Elements, nên mọi giao diện đều được xử lý thông qua DOM
- Tối thiểu hóa số lượng nút DOM là cốt lõi của tối ưu hiệu năng
- Tuy nhiên, hiệu năng không phải là tất cả; cũng cần cân nhắc các yếu tố khác như khả năng bảo trì, bảo mật, tính tiện dụng và khả năng truy cập
- Ví dụ, nếu không render các thuộc tính
aria-* thì hiệu năng có thể được cải thiện, nhưng chúng lại là bắt buộc để đảm bảo khả năng truy cập
- Tối ưu hiệu năng là quan trọng, nhưng trên thực tế những vấn đề đơn giản hơn như layout thrashing, network waterfall, và re-render không cần thiết thường ảnh hưởng đến hiệu năng nhiều hơn
Chi phí của tiêu chuẩn
- Việc hỗ trợ tiêu chuẩn đòi hỏi phải viết thêm mã và thực thi thêm
- Tuy nhiên, hỗ trợ Web Components không phải là gánh nặng lớn
- Việc cân nhắc các tính năng mới của nền tảng web là điều tự nhiên, và điều này cũng đúng với Symbols, Proxys, Promises, v.v.
- Một bộ phận trong cộng đồng phát triển web có thể không muốn hỗ trợ Web Components, và điều đó cũng không sao
- Web là một mái lều lớn cho phép nhiều cách tiếp cận khác nhau
Kết luận
- Bản thân Web Components không có vấn đề gì, nhưng lời hứa rằng chúng có thể thay thế mọi thứ là điều nguy hiểm
- Web Components có những điểm yếu ở server-side rendering, khả năng truy cập và tính tương tác liên vận hành
- Các framework khác như React, Solid, Svelte vẫn có những lĩnh vực mà chúng thực sự tỏa sáng
- Web được sử dụng cho nhiều mục đích khác nhau, và điều đó mang lại cơ hội để thể hiện sự sáng tạo
- Web Components có thể không phù hợp với bạn, và điều đó cũng không sao
# Tóm tắt của GN⁺
- Bài viết này đưa ra nhiều góc nhìn khác nhau về Web Components và nhấn mạnh sự cân bằng giữa hiệu năng với các yếu tố khác
- Web Components không thể thay thế mọi thứ, nhưng phù hợp với một số mục đích cụ thể
- Cộng đồng phát triển web cho phép nhiều cách tiếp cận khác nhau, và điều đó thúc đẩy sự sáng tạo
- Nếu Web Components không phù hợp, bạn có thể dùng framework khác
- Các khả năng đa dạng của web mang đến những cơ hội mới cho biểu đạt sáng tạo
1 bình luận
Ý kiến trên Hacker News
Cảm thấy bài viết "Web Components Are Not the Future" thiếu những lập luận đủ sức thuyết phục
Mọi người bất đồng quan điểm vì theo đuổi những kiểu tối ưu hóa khác nhau
Svelte hỗ trợ tạo Web Components thông qua Custom Elements API
Không nghĩ Web Components sẽ làm cuộc sống của lập trình viên full-stack tốt hơn
Web Components và Shadow DOM có thể cản trở hoạt động của các tiện ích mở rộng trình duyệt
Tính tương tác đi kèm với chi phí hiệu năng
Nghĩ rằng Web Components có thể giải quyết các vấn đề frontend hiện nay
Đang thừa kế một codebase JS 250.000 dòng và refactor sang Web Components
Web Components có thể hoạt động ngay cả khi không có JS
Framework và Web Components là những công cụ giải quyết các vấn đề khác nhau