Svelte ได้ผนวกฟีเจอร์สำคัญที่ช่วยให้ค่าอนุพันธ์สามารถเขียนได้ เพิ่มฟังก์ชันการทำงานใหม่ให้กับระบบการตอบสนอง การเปลี่ยนแปลงนี้เป็นส่วนหนึ่งของการเปลี่ยนผ่านไปสู่ระบบ runes ของ Svelte 5 ซึ่งได้จุดประกายการถกเถียงอย่างมากในชุมชนนักพัฒนาเกี่ยวกับวิวัฒนาการของเฟรมเวิร์กและผลกระทบต่อประสบการณ์ของนักพัฒนา
ค่าอนุพันธ์ที่เขียนได้
ฟีเจอร์ที่เพิ่งผนวกเข้ามาใหม่นี้ทำให้ค่าอนุพันธ์ใน Svelte 5 สามารถเขียนได้ ตอบสนองความต้องการในทางปฏิบัติสำหรับการพัฒนาแอปพลิเคชัน ก่อนหน้านี้ ค่าอนุพันธ์เป็นแบบอ่านอย่างเดียวอย่างเคร่งครัด (ซึ่งมีความสมเหตุสมผลในเชิงแนวคิด เนื่องจากค่าเหล่านี้คำนวณมาจากค่าอื่น) แต่จำกัดการใช้งานบางกรณี ด้วยการเปลี่ยนแปลงนี้ นักพัฒนาสามารถแทนที่ค่าอนุพันธ์ได้ ช่วยให้มีรูปแบบที่ยืดหยุ่นมากขึ้น เช่น การอัปเดต UI แบบคาดการณ์ล่วงหน้า ซึ่งค่าชั่วคราวในเครื่องสามารถแสดงได้ก่อนการยืนยันจากแบ็กเอนด์
ผมรัก runes ผมรัก svelte 5 ผมรัก sveltekit พวกมันทำงานร่วมกันให้การเข้าสู่การพัฒนาได้อย่างราบรื่น ช่วยให้คุณเข้าใจแนวคิดที่คล้ายกับ JS/HTML ได้อย่างรวดเร็ว
ข้อถกเถียงเรื่อง Runes
การแนะนำ runes ใน Svelte 5 แสดงถึงการเปลี่ยนแปลงครั้งสำคัญจากการตอบสนองแบบเวทมนตร์ของเวอร์ชันก่อนหน้า ไปสู่โมเดลที่ชัดเจนมากขึ้นโดยใช้การประกาศพิเศษที่มีเครื่องหมาย $ นำหน้า เช่น $state
, $derived
และ $effect
แม้ว่าการเปลี่ยนแปลงนี้จะเป็นที่ถกเถียง แต่นักพัฒนาหลายคนที่ใช้ runes ในโปรเจกต์ขนาดใหญ่รายงานว่า หลังจากผ่านช่วงการเรียนรู้เริ่มต้น จะได้รับการบำรุงรักษาที่ดีขึ้นและโค้ดที่ชัดเจนมากขึ้น ลักษณะที่ชัดเจนของ runes ทำให้เข้าใจการไหลของข้อมูลในคอมโพเนนต์ที่ซับซ้อนได้ง่ายขึ้น ซึ่งโมเดลการตอบสนองแบบเดิมอาจทำให้สับสนเมื่อมี props ที่ผูกกันหลายตัวและสถานะอนุพันธ์
รูนส์หลักใน Svelte 5
$state
- ประกาศสถานะแบบรีแอคทีฟ$derived
- สร้างค่าที่อ้างอิงจากค่ารีแอคทีฟอื่น (ตอนนี้สามารถเขียนได้)$effect
- ทำงานเมื่อค่าที่พึ่งพามีการเปลี่ยนแปลง
ความคิดเห็นของชุมชน
- เชิงบวก: มีความชัดเจนมากขึ้นในโปรเจคขนาดใหญ่ การตอบสนองแบบรีแอคทีฟที่คาดเดาได้มากขึ้น
- เชิงลบ: สูญเสียความเรียบง่าย มีความชันในการเรียนรู้มากขึ้น มีความท้าทายในการเปลี่ยนผ่าน
- ผสมผสาน: การบำรุงรักษาที่ดีขึ้นแลกกับความสง่างามในช่วงแรก
การแลกเปลี่ยนประสบการณ์ของนักพัฒนา
ชุมชนดูเหมือนจะแบ่งแยกเกี่ยวกับการพัฒนาของ Svelte ว่าได้ปรับปรุงหรือลดทอนประสบการณ์ของนักพัฒนาหรือไม่ นักพัฒนาบางคนเสียดายความเรียบง่ายและความสง่างามแบบดั้งเดิมของ Svelte ซึ่งทำให้มีความน่าดึงดูดเป็นพิเศษสำหรับโปรเจกต์ขนาดเล็ก คนอื่นๆ โต้แย้งว่า runes แก้ปัญหาสำคัญที่เกิดขึ้นในแอปพลิเคชันขนาดใหญ่ ซึ่งเวทมนตร์ของเวอร์ชันก่อนหน้าอาจนำไปสู่พฤติกรรมที่ไม่คาดคิดและความท้าทายในการดีบัก
สำหรับทีมที่ทำงานกับแอปพลิเคชันในระบบการผลิต ประสบการณ์การย้ายไปยัง Svelte 5 มีทั้งดีและไม่ดี บางคนรายงานว่าเครื่องมือการย้ายอัตโนมัติทำงานได้ดีอย่างน่าประหลาดใจ ต้องการการปรับแต่งด้วยตนเองเพียงเล็กน้อยแม้กับโค้ดเบสขนาดใหญ่ คนอื่นๆ สังเกตว่าระบบนิเวศอยู่ในช่วงเปลี่ยนผ่าน โดยไลบรารีหลายตัวยังคงใช้รูปแบบ stores แบบเก่าแทนที่จะเป็นระบบ runes ใหม่
ข้อพิจารณาเกี่ยวกับระบบนิเวศ
ระบบนิเวศของ Svelte เผชิญกับความท้าทายในช่วงเปลี่ยนผ่านนี้ เมื่อเทียบกับระบบนิเวศที่เติบโตเต็มที่ของ React, Svelte มีไลบรารี UI และเครื่องมือน้อยกว่า และแพ็กเกจที่มีอยู่หลายตัวได้รับการดูแลโดยทีมขนาดเล็กที่ต้องจัดการกับงานการย้าย สิ่งนี้สร้างข้อเสียเปรียบชั่วคราวสำหรับทีมที่กำลังพิจารณา Svelte สำหรับโปรเจกต์ใหม่ แม้ว่าการปรับปรุงเฟรมเวิร์กหลักอาจมีน้ำหนักมากกว่าข้อกังวลเหล่านี้ในระยะยาว
สำหรับนักพัฒนาที่กำลังประเมินเฟรมเวิร์กฟรอนต์เอนด์ ช่วงเวลาแห่งการเปลี่ยนผ่านนี้เน้นย้ำข้อพิจารณาที่สำคัญ Svelte 5 พร้อม runes ดูเหมือนจะเสนอความสามารถในการขยายที่ดีขึ้นสำหรับแอปพลิเคชันที่ซับซ้อนในราคาของความสง่างามเริ่มต้น ในขณะที่เฟรมเวิร์กคู่แข่งอย่าง React ยังคงมีข้อได้เปรียบในด้านความกว้างของระบบนิเวศและการสนับสนุนเครื่องมือ
เมื่อ Svelte ยังคงพัฒนาต่อไป ฟีเจอร์ล่าสุดนี้ที่อนุญาตให้ค่าอนุพันธ์สามารถเขียนได้แสดงให้เห็นถึงความมุ่งมั่นของทีมในการสร้างความสมดุลระหว่างความบริสุทธิ์ในเชิงแนวคิดกับความต้องการของนักพัฒนาในทางปฏิบัติ ไม่ว่าแนวทางนี้จะช่วยให้ Svelte ได้รับการยอมรับในวงกว้างมากขึ้นหรือไม่ก็ตาม แต่เห็นได้ชัดว่าเฟรมเวิร์กกำลังเติบโตในรูปแบบที่ตอบสนองความท้าทายในการพัฒนาแอปพลิเคชันในโลกแห่งความเป็นจริง
อ้างอิง: feat: make deriveds writable #15570