การผสาน LiveView และ Svelte
- LiveView มอบวิธีที่ไม่เหมือนใครในการสร้างเว็บแอปพลิเคชัน
- เซิร์ฟเวอร์เป็นผู้เก็บสถานะ จัดการพฤติกรรมฝั่งฟรอนต์เอนด์จากแบ็กเอนด์ และอัปเดต DOM แบบค่อยเป็นค่อยไป
- ความซับซ้อนของ SPA มาจากความซับซ้อนของระบบกระจาย และ LiveView มอบประสบการณ์ไคลเอนต์ที่สมบูรณ์โดยไม่ต้องมีฟรอนต์เอนด์ไมโครเซอร์วิส
สิ่งที่ยากของ LiveView
- สถานะฝั่งไคลเอนต์เป็นสิ่งที่หลีกเลี่ยงไม่ได้ และหลีกเลี่ยงความหน่วงระหว่างเซิร์ฟเวอร์กับผู้ใช้ไม่ได้
- LiveView ให้เซิร์ฟเวอร์รับผิดชอบการเปลี่ยนแปลง DOM จำนวนมาก แต่ไม่สามารถควบคุมทุกอย่างได้
- LiveView มีคอมโพเนนต์อยู่ 3 ประเภท: LiveViews, LiveComponents และ Components
- การรีแฟกเตอร์ระหว่าง LiveView กับ LiveComponents ยุ่งยากกว่าที่คาดไว้
ทิศทางที่กำกวมของ LiveView
- LiveView มักทำให้รู้สึกว่ามีบางอย่างขาดหายไป
- LiveView มีจุดร่วมหลายอย่างกับเฟรมเวิร์กฟรอนต์เอนด์สมัยใหม่ แต่ต้องตระหนักถึงความแตกต่างและเข้าหาปัญหาในแบบที่ต่างออกไป
LiveView + Svelte
- LiveSvelte ทำให้สามารถเรนเดอร์คอมโพเนนต์ Svelte ใน LiveView ได้
- แบ็กเอนด์ควบคุม props ของคอมโพเนนต์ฟรอนต์เอนด์ และทั้งฟรอนต์เอนด์กับแบ็กเอนด์ต่างก็มีสถานะของตัวเอง
- มีช่องทางสื่อสารแบบส่วนตัวและสองทางระหว่างฟรอนต์เอนด์กับแบ็กเอนด์
คุณลักษณะที่พลิกเกมของ LiveSvelte
- การแบ่งความรับผิดชอบระหว่างแบ็กเอนด์กับฟรอนต์เอนด์ชัดเจน และความซับซ้อนถูกรวมไว้ที่ฝั่งเซิร์ฟเวอร์
- LiveView โดดเด่นที่สุดเมื่อเป็นฟรอนต์เอนด์สำหรับแบ็กเอนด์ โดยมอบโปรเซสฝั่งแบ็กเอนด์ที่เรนเดอร์คอมโพเนนต์ฟรอนต์เอนด์และคงสถานะไว้
ความเห็นของ GN⁺
- การผสาน LiveView กับ Svelte แยกการจัดการสถานะระหว่างเซิร์ฟเวอร์กับไคลเอนต์ได้อย่างมีประสิทธิภาพ และช่วยให้นักพัฒนาสร้างแอปพลิเคชันได้รวดเร็วและเป็นธรรมชาติมากขึ้น
- เทคโนโลยีนี้อาจมีประโยชน์อย่างยิ่งกับเว็บแอปพลิเคชันที่การโต้ตอบแบบเรียลไทม์เป็นเรื่องสำคัญ และอาจช่วยยกระดับประสบการณ์ผู้ใช้ได้
- อย่างไรก็ตาม ความหน่วงในการสื่อสารกับเซิร์ฟเวอร์อาจส่งผลต่อประสบการณ์ผู้ใช้ ดังนั้นการเพิ่มประสิทธิภาพและการวางเซิร์ฟเวอร์ให้ใกล้ผู้ใช้จึงเป็นประเด็นสำคัญ
- การผสาน LiveView กับ Svelte นำเสนอพาราไดม์ใหม่ให้แก่นักพัฒนาที่คุ้นเคยกับการพัฒนาแบบ SPA ซึ่งมีศักยภาพในการลดเส้นโค้งการเรียนรู้และเพิ่มประสิทธิภาพการพัฒนา
- การซิงก์สถานะแบบเรียลไทม์และการสื่อสารสองทางที่เทคโนโลยีนี้มอบให้ อาจเป็นตัวเลือกที่น่าสนใจอย่างยิ่งสำหรับเครื่องมือทำงานร่วมกัน แดชบอร์ด หรือแอปพลิเคชันที่จัดการข้อมูลแบบเรียลไทม์
1 ความคิดเห็น
ความคิดเห็นใน Hacker News
หนึ่งในแพตเทิร์นที่ใช้ในวิดีโอเกมแบบผู้เล่นหลายคน คือมีโค้ดที่โดยพื้นฐานแล้วทำงานทั้งบนไคลเอนต์และเซิร์ฟเวอร์
เคยมีการบรรยายในงาน ElixirConf 2022 เกี่ยวกับวิธีผสาน LiveView กับ Svelte และผู้มีส่วนร่วมของ live_svelte ก็ช่วยทำให้สิ่งนี้เกิดขึ้นจริง
เมื่อมีแถวใหม่เข้ามา LiveView จะอัปเดตไคลเอนต์ ดังนั้นแค่ push เข้าไปในตารางก็พอ
ใน BeaconCMS มีการใช้ Svelte ร่วมกับ LiveView
แทนที่จะจัดการสถานะบนไคลเอนต์ ก็กลายเป็นว่าต้องจัดการสถานะทั้งบนไคลเอนต์และเซิร์ฟเวอร์
ข้อจำกัดของแนวทางนี้อยู่ที่ความเร็วแสง: เซิร์ฟเวอร์มีขีดจำกัดว่าจะอยู่ใกล้ผู้ใช้ได้แค่ไหน
ในฐานะคนที่สร้าง LiveSvelte ขึ้นมา ถ้ามีคำถามก็เชิญถามได้
โดยทั่วไปแล้วอยากสร้างแอปด้วยโมเดลแบบนี้: event-driven, อัปเดตแบบเรียลไทม์สองทางพร้อมเซิร์ฟเวอร์, event ที่มีลำดับ, สถานะทั้ง local และ remote...
ในแอปมีการใช้ Stimulus controller ที่นำกลับมาใช้ซ้ำได้ร่วมกับ LiveView ซึ่งก็ทำงานได้ลื่นไหลเช่นกัน
เป็นโปรเจ็กต์ที่ยอดเยี่ยม! เพิ่งปล่อยตอนของ Svelte Radio เกี่ยวกับเรื่องนี้ออกมา