ไลบรารี Lit web components ได้จุดประกายการถกเถียงอย่างเข้มข้นในหมู่นักพัฒนา โดยการสนทนาเผยให้เห็นทั้งผู้สนับสนุนที่กระตือรือร้นและผู้วิจารณ์ที่มีเสียงดังของเฟรมเวิร์กขนาดเล็กที่สัญญาว่าจะทำให้การพัฒนา web component ง่ายขึ้น
ข้อมูลจำเพาะของ Lit Library:
- ขนาด Bundle: ~5KB (minified และ compressed)
- พัฒนาบนมาตรฐาน Web Components
- รองรับ reactive properties และ declarative templates
- ใช้ Shadow DOM เป็นค่าเริ่มต้นสำหรับการจำกัดขอบเขต style
- เข้ากันได้กับ TypeScript decorators (เป็นตัวเลือก)
Shadow DOM สร้างความท้าทายด้านการเข้าถึง
หนึ่งในความกังวลที่สำคัญที่สุดที่นักพัฒนายกขึ้นมาคือผลกระทบของ Shadow DOM ต่อคุณสมบัติการเข้าถึง ลักษณะที่มีขอบเขตจำกัดของ Shadow DOM ทำลายรูปแบบการเข้าถึงแบบดั้งเดิม โดยเฉพาะอย่างยิ่งส่งผลต่อความสัมพันธ์ของ element ที่อาศัยการอ้างอิง ID สิ่งนี้สร้างปัญหากับ attribute ของ ARIA เช่น describedby
และ labelledby
เมื่อ element ต้องการอ้างอิงถึง component ข้ามขอบเขตของ shadow ผู้ดูแล Lit ยอมรับข้อจำกัดนี้ โดยระบุว่าฟังก์ชันการทำงานของเป้าหมายการอ้างอิง ARIA เพื่อให้การอ้างอิงแบบ ID ทำงานข้าม shadow root ยังคงหายไปจากมาตรฐานเว็บ
Shadow DOM: มาตรฐานเว็บที่ห่อหุ้มสไตล์และมาร์กอัปของ component ป้องกันไม่ให้ส่งผลกระทบหรือได้รับผลกระทบจากส่วนอื่นของหน้าเว็บ
มาตรฐานเว็บที่กำลังจะมาซึ่งจะแก้ไขข้อจำกัดของ Lit :
- Native JavaScript signals (ข้อเสนอ TC39 )
- Scoped custom element registries (กำลังส่งมอบใน Safari , Chrome ตัวถัดไป)
- Open styleable shadow roots
- CSS Modules (กำลังส่งมอบใน Chrome , กำลังมาสู่ Firefox )
- ARIA reference target สำหรับการเข้าถึงข้าม shadow DOM
นักพัฒนาตั้งคำถามถึงความจำเป็นของการสร้างนามธรรมเพิ่มเติม
กลุ่มนักพัฒนาที่เพิ่มขึ้นโต้แย้งว่ามาตรฐานเว็บสมัยใหม่ได้พัฒนาไปมากพอที่จะทำให้ไลบรารีอย่าง Lit ไม่จำเป็น บางคนชอบเขียน vanilla web components โดยตรง โดยอ้างถึงประโยชน์ของการหลีกเลี่ยงการพึ่งพาเฟรมเวิร์กและรอบการอัปเกรด อย่างไรก็ตาม ผู้สนับสนุนโต้กลับว่า Lit ให้การสร้างนามธรรมที่มีค่าสำหรับรูปแบบทั่วไป เช่น reactive properties และ declarative templates ลดโค้ดที่ซ้ำซากที่นักพัฒนาจะต้องใช้งานเอง
วิวัฒนาการของเฟรมเวิร์กจุดประกายความขัดแย้ง
นักวิจารณ์ชี้ให้เห็นว่า Lit ดูเหมือนจะเดินตามเส้นทางเดียวกับ React โดยค่อยๆ เพิ่มคุณสมบัติแบบเฟรมเวิร์ก เช่น การจัดการ context และกฎไวยากรณ์แบบกำหนดเอง วิวัฒนาการนี้ได้รับการวิจารณ์จากผู้ที่เริ่มต้นยอมรับ Lit เพราะความเรียบง่าย การถกเถียงทวีความรุนแรงขึ้นเมื่อพูดถึง template directives และไวยากรณ์ attribute พิเศษ โดยบางคนโต้แย้งว่าการเพิ่มเติมเหล่านี้ขัดแย้งกับปรัชญาเดิมของไลบรารีในการอยู่ใกล้กับมาตรฐานเว็บ
Template directives: ฟังก์ชันพิเศษใน Lit ที่ให้ฟังก์ชันการทำงานที่ปรับปรุงแล้วภายใน HTML templates เช่น การแสดงผลแบบมีเงื่อนไขหรือการจัดการ class
เรื่องราวความสำเร็จในการใช้งานจริงโต้แย้งการวิจารณ์
แม้จะมีความกังวล แต่ Lit ได้พบความสำเร็จในแอปพลิเคชันการใช้งานจริงที่สำคัญ ไลบรารีนี้ขับเคลื่อนโปรเจกต์สำคัญ รวมถึง Chrome DevTools, Firefox UI components, Photoshop สำหรับเว็บ และอินเทอร์เฟซ Chrome OS การใช้งานเหล่านี้แสดงให้เห็นว่า Lit สามารถจัดการกับแอปพลิเคชันที่ซับซ้อนในโลกแห่งความเป็นจริงได้อย่างมีประสิทธิภาพ ให้หลักฐานสำหรับความสามารถในการใช้งานในสภาพแวดล้อมองค์กร
โครงการใหญ่ที่ใช้ Lit :
- Chrome DevTools
- Firefox UI components
- Photoshop for the web
- Chrome OS
- MDN (Mozilla Developer Network)
- IBM Carbon Web Components
- Microsoft's design systems
มาตรฐานในอนาคตอาจแก้ไขข้อจำกัดปัจจุบัน
ผู้ดูแล Lit เปิดเผยงานที่กำลังดำเนินการอยู่เกี่ยวกับข้อเสนอที่อาจแก้ไขข้อจำกัดปัจจุบันหลายประการ Native signals ใน JavaScript และ reactive templating APIs กำลังถูกพัฒนาที่ในที่สุดอาจทำให้ไลบรารีอย่าง Lit ไม่จำเป็น นอกจากนี้ มาตรฐานเว็บที่กำลังจะมาถึง เช่น scoped custom element registries และ open styleable shadow roots สัญญาว่าจะแก้ไขปัญหาการทำงานร่วมกันบางประการที่ปัจจุบันรบกวน web components
การถกเถียงรอบ Lit สะท้อนความตึงเครียดที่กว้างขึ้นในการพัฒนาเว็บระหว่างการยอมรับมาตรฐานใหม่และการรักษาเวิร์กโฟลว์การพัฒนาที่ใช้งานได้จริง ในขณะที่นักพัฒนาบางคนชอบการควบคุมและความเรียบง่ายของแนวทางแบบ vanilla คนอื่นๆ ให้ความสำคัญกับการเพิ่มผลผลิตที่การสร้างนามธรรมที่ออกแบบมาดีสามารถให้ได้ เมื่อมาตรฐานเว็บยังคงพัฒนาต่อไป บทบาทของไลบรารีอย่าง Lit อาจเปลี่ยนแปลง แต่สำหรับตอนนี้ พวกเขายังคงเป็นเครื่องมือสำคัญสำหรับทีมพัฒนาหลายทีมที่สร้างแอปพลิเคชันแบบ component-based
อ้างอิง: Lit