เว็บคอมโพเนนต์ก็โอเค
- ชุมชนนักพัฒนาเว็บมักถกเถียงกันเกี่ยวกับเว็บคอมโพเนนต์อยู่เสมอ
- Ryan Carniato เขียนบทความชื่อ "Web Components Are Not the Future" และ Cory LaViska ก็ตอบกลับด้วยบทความ "Web Components Are Not the Future — They’re the Present"
- ผู้เขียนพยายามยุติข้อถกเถียงนี้อย่างสันติ
ประสิทธิภาพ
- เว็บคอมโพเนนต์สร้างอยู่บนพื้นฐานของ Custom Elements ทำให้อินเทอร์เฟซทั้งหมดถูกจัดการผ่าน DOM
- การลดจำนวน DOM node ให้เหลือน้อยที่สุดคือหัวใจสำคัญของการปรับแต่งประสิทธิภาพ
- อย่างไรก็ตาม ประสิทธิภาพไม่ใช่ทุกสิ่ง ยังต้องคำนึงถึงปัจจัยอื่นอย่างการบำรุงรักษา ความปลอดภัย การใช้งาน และการเข้าถึง
- ตัวอย่างเช่น หากไม่เรนเดอร์แอตทริบิวต์
aria-* ก็อาจช่วยเพิ่มประสิทธิภาพได้ แต่สำหรับการเข้าถึงแล้ว สิ่งนี้จำเป็นอย่างยิ่ง
- การปรับประสิทธิภาพเป็นเรื่องสำคัญ แต่ในความเป็นจริง ปัญหาที่เรียบง่ายกว่าอย่าง layout thrashing, network waterfall และการ re-render ที่ไม่จำเป็น มักส่งผลต่อประสิทธิภาพมากกว่า
ต้นทุนของมาตรฐาน
- การรองรับมาตรฐานต้องอาศัยการเขียนและรันโค้ดเพิ่มเติม
- แต่การรองรับเว็บคอมโพเนนต์ไม่ได้เป็นภาระที่ใหญ่โต
- การพิจารณาฟีเจอร์ใหม่ของเว็บแพลตฟอร์มเป็นเรื่องปกติ และสิ่งนี้ก็ใช้กับ Symbols, Proxys, Promises เป็นต้นด้วย
- บางส่วนของชุมชนนักพัฒนาเว็บอาจไม่ต้องการรองรับเว็บคอมโพเนนต์ ซึ่งก็ไม่เป็นไร
- เว็บเป็นพื้นที่กว้างที่เปิดรับแนวทางที่หลากหลาย
บทสรุป
- ตัวเว็บคอมโพเนนต์เองไม่ได้มีปัญหา แต่คำสัญญาที่ว่ามันจะมาแทนที่ทุกอย่างได้นั้นเป็นเรื่องอันตราย
- เว็บคอมโพเนนต์มีจุดอ่อนในด้าน server-side rendering, การเข้าถึง และการทำงานร่วมกันระหว่างระบบ
- เฟรมเวิร์กอื่นอย่าง React, Solid และ Svelte ก็ยังมีพื้นที่ที่โดดเด่นของตัวเอง
- เว็บถูกใช้งานอย่างหลากหลายวัตถุประสงค์ และนั่นเปิดโอกาสให้แสดงความคิดสร้างสรรค์ได้
- เว็บคอมโพเนนต์อาจไม่เหมาะกับคุณ และนั่นก็ไม่เป็นไร
# GN⁺ สรุป
- บทความนี้นำเสนอมุมมองที่หลากหลายต่อเว็บคอมโพเนนต์ พร้อมเน้นเรื่องความสมดุลระหว่างประสิทธิภาพกับปัจจัยอื่น ๆ
- เว็บคอมโพเนนต์ไม่สามารถแทนที่ทุกอย่างได้ แต่เหมาะกับการใช้งานบางประเภท
- ชุมชนนักพัฒนาเว็บเปิดรับแนวทางที่หลากหลาย และสิ่งนี้ช่วยส่งเสริมความคิดสร้างสรรค์
- หากเว็บคอมโพเนนต์ไม่เหมาะกับคุณ ก็สามารถใช้เฟรมเวิร์กอื่นได้
- ความสามารถที่หลากหลายของเว็บเปิดโอกาสใหม่ ๆ ให้กับการแสดงออกเชิงสร้างสรรค์
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
รู้สึกว่าบทความ "Web Components Are Not the Future" ยังขาดข้อโต้แย้งที่น่าโน้มน้าว
ผู้คนมีความเห็นแตกต่างกันเพราะต่างก็แสวงหาการปรับให้เหมาะสมคนละแบบ
Svelte รองรับการสร้าง Web Components ผ่าน Custom Elements API
คิดว่า Web Components ไม่ได้ทำให้ชีวิตของนักพัฒนาแบบฟูลสแต็กดีขึ้น
Web Components และ Shadow DOM อาจรบกวนการทำงานของส่วนขยายเบราว์เซอร์
การทำงานร่วมกันได้ย่อมมีต้นทุนด้านประสิทธิภาพ
คิดว่า Web Components สามารถแก้ปัญหาฟรอนต์เอนด์ในปัจจุบันได้
ได้รับช่วงต่อโค้ดเบส JS ขนาด 250,000 บรรทัด และกำลังรีแฟกเตอร์เป็น Web Components
Web Components สามารถทำงานได้แม้ไม่มี JS
เฟรมเวิร์กและ Web Components เป็นเครื่องมือที่แก้ปัญหาคนละแบบ