2 คะแนน โดย GN⁺ 2024-12-04 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • บรรลุหมุดหมาย 1.0 หลังจากคอมมิตแรกผ่านไป 6 ปี
  • จุดเริ่มต้นและเหตุผลของ LiveView
    • LiveView เริ่มต้นขึ้นเพื่อให้สร้างแอปพลิเคชันแบบ server-rendered ได้โดยไม่ต้องใช้ JavaScript
    • สามารถแก้ปัญหาที่ซับซ้อนอย่างการตรวจสอบฟอร์มแบบเรียลไทม์ การอัปเดตจำนวนสินค้าในตะกร้า และการอัปเดตสตรีมแบบเรียลไทม์ได้อย่างเรียบง่าย
    • Elixir และ Phoenix เหมาะอย่างยิ่งกับแนวทางนี้
  • ข้อดีของสถาปัตยกรรมแบบเรียลไทม์
    • มอบรากฐานแบบสองทางในเวลาจริงให้กับผู้ใช้และ UI ทุกส่วน เพื่อให้นักพัฒนามุ่งเน้นไปที่การสร้างฟีเจอร์ได้
    • ด้วย Elixir จึงสามารถสร้างความสามารถที่ทำไม่ได้บนแพลตฟอร์มอื่น
  • การนำ LiveView ไปใช้งานในช่วงแรก
    • สร้าง UI แบบฝั่งเซิร์ฟเวอร์ที่เมื่อสถานะเปลี่ยนแล้ว UI จะอัปเดตโดยอัตโนมัติ คล้ายกับ React
    • ใช้ Phoenix Channels เพื่อรองรับการเชื่อมต่อได้หลายล้านรายการ
  • การปรับแต่งโมเดลการเขียนโปรแกรมให้เหมาะสม
    • เอนจินที่เป็นจุดเด่นของ LiveView จะประมวลผลเฉพาะส่วนไดนามิกของเทมเพลต และส่งข้อมูลเท่าที่จำเป็นเท่านั้น
    • แยกส่วนคงที่และส่วนไดนามิกออกจากกัน เพื่อให้อัปเดตได้อย่างมีประสิทธิภาพ
  • เวลาแฝงระดับแนวหน้า
    • LiveView มอบประสิทธิภาพที่เหมาะสมที่สุดผ่าน payload ขนาดเล็กและการเชื่อมต่อแบบคงสถานะ
    • ใช้หน่วยความจำฝั่งเซิร์ฟเวอร์น้อย แต่รองรับการเชื่อมต่อพร้อมกันได้หลายแสนรายการ
  • คอมโพเนนต์ที่นำกลับมาใช้ซ้ำได้ผ่าน HEEx
    • นำระบบคอมโพเนนต์เชิงประกาศที่รองรับการตรวจสอบ HTML และการตรวจสอบแอตทริบิวต์ตอนคอมไพล์เข้ามาใช้
    • มีคำเตือนตอนคอมไพล์เมื่อมีการใช้แอตทริบิวต์ผิดพลาดระหว่างการเรียกใช้คอมโพเนนต์
  • การทำให้ไวยากรณ์ของ HEEx เรียบง่ายขึ้น
    • เพิ่มไวยากรณ์แบบย่อที่สามารถแทรกค่าได้โดยตรงภายในเนื้อหาของแท็ก
  • การอัปโหลดแบบโต้ตอบได้
    • มอบ abstraction เดียวสำหรับการอัปโหลดไฟล์ โดยรองรับทั้งการอัปโหลดตรงไปยังคลาวด์และตรงสู่เซิร์ฟเวอร์
    • สามารถสะท้อนความคืบหน้าของการอัปโหลดหรือสร้างงานจัดการไฟล์ขั้นสูงได้อย่างง่ายดาย
  • สตรีมและการประมวลผลแบบอะซิงก์
    • เพิ่ม stream primitive เพื่อจัดการคอลเล็กชันขนาดใหญ่ได้อย่างมีประสิทธิภาพ
    • มีความสามารถที่ช่วยให้จัดการงานอะซิงก์และเรนเดอร์ผลลัพธ์ได้ง่าย
  • LiveView ก้าวสู่กระแสหลัก
    • LiveView และ .NET Blazor เริ่มต้นขึ้นในช่วงเวลาใกล้เคียงกัน และช่วยผลักดันการยอมรับโมเดลการเขียนโปรแกรมนี้
    • คอมมูนิตี้ของภาษาอื่น ๆ ก็กำลังนำโมเดลนี้ไปใช้ในรูปแบบที่หลากหลาย
  • แผนในอนาคต
    • มีแผนรองรับการผสานรวม JavaScript hooks การเสริมการทำงานร่วมกับ web components และการรองรับ navigation guards เป็นต้น

1 ความคิดเห็น

 
GN⁺ 2024-12-04
ความเห็นจาก Hacker News
  • ผู้สร้าง Phoenix มาตอบคำถามเกี่ยวกับ Elixir/Phoenix/LiveView พร้อมแนะนำตัวติดตั้งใหม่

    • ตัวติดตั้งใหม่นี้ช่วยให้ติดตั้งโปรเจ็กต์ Elixir และ Phoenix ได้ด้วยคำสั่งเดียว
    • มีคำสั่งติดตั้งสำหรับ macOS/Linux และ Windows
    • เป็นการขยายต่อจากตัวติดตั้งอย่างเป็นทางการของ Elixir
    • มีคู่มือการติดตั้งแบบไม่ใช้ |sh ด้วย
  • LiveView เป็นความสามารถที่ก้าวข้ามข้อจำกัดของ Rails และเริ่มต้นขึ้นจากฟีเจอร์ "channels"

    • เดิมที LiveView ผสานกับ static view ได้ยาก แต่เมื่อเวลาผ่านไปก็สามารถแชร์โค้ดกันได้
    • Phoenix 1.7 ได้นำเลย์เอาต์และแนวคิดใหม่เข้ามา ซึ่งถือว่าเปลี่ยนเกมสำหรับการพัฒนาเว็บแอป
  • เคยสร้างสตาร์ทอัปด้วย LiveView แต่ไม่ประสบความสำเร็จ

    • การผสานกับ React ทำได้ลื่นไหล และการเชื่อมต่อกับไลบรารีที่ซับซ้อนก็ไม่มีปัญหา
    • แต่ปัญหาที่เคยมีโซลูชันใน React ต้องกลับมาแก้ใหม่ตั้งแต่ต้นใน LiveView
  • เคยสร้างแอป production หลายตัวด้วย LiveView ซึ่งแม้จะต้องใช้การเชื่อมต่อ WebSocket แต่ก็มีข้อดีหลายอย่าง

    • การ generate โค้ดช่วยเพิ่มผลิตภาพ และการใช้ Elixir เรนเดอร์ฟรอนต์เอนด์ก็มีประสิทธิภาพ
    • เพิ่มความสามารถแบบเรียลไทม์ผ่าน WebSocket ได้ง่าย
    • เก็บ business logic ไว้ใน Contexts ทำให้เปิดให้บริการ API ได้สะดวก
  • LiveView ทำให้กลับมามีความหลงใหลในการพัฒนาเว็บอีกครั้ง และมีผลิตภาพสูงมาก

    • มีคอร์สสำหรับเรียนรู้ LiveView และอยากให้มีคนเรียนรู้เฟรมเวิร์กนี้มากขึ้น
  • ในเว็บแอปทั่วไป ต้นทุนการประสานงานระหว่างนักพัฒนาฝั่งฟรอนต์เอนด์กับแบ็กเอนด์แพงที่สุด

    • LiveView มองข้ามปัญหานี้และทำให้การพัฒนาแบบฟูลสแตกเป็นไปได้
    • มีนักพัฒนาน้อยลงแต่ส่งมอบฟีเจอร์ได้มากขึ้น
  • ใช้ LiveView มาตั้งแต่ปี 2019 และสนุกกับการพัฒนาอย่างมาก

    • LiveView ถูกเปิดตัวครั้งแรกที่ ElixirConf EU
  • ได้เขียนความเห็นเกี่ยวกับการออก LiveView 1.0 ไว้ในบล็อก

  • อยากฟังความเห็นเกี่ยวกับ trade-off ของ LiveView เทียบกับการยอมรับเทคโนโลยีฝั่ง JS

    • จำเป็นต้องมีการพูดคุยเรื่องไลบรารีที่หลากหลายของ JS และความเป็นไปได้ในการนำเทคโนโลยี AI มาใช้
  • LiveView มอบประสบการณ์การพัฒนาที่มีผลิตภาพสูงมาก แต่อยากให้แก้ปัญหาเรื่องการเชื่อมต่อที่ไม่เสถียร

    • แม้การรองรับออฟไลน์จะทำได้ยาก แต่ก็ควรมีการรองรับสำหรับการเชื่อมต่อที่ไม่เสถียร