11 คะแนน โดย GN⁺ 2024-12-13 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • เปิดตัว Dioxus 0.6

    • Dioxus เป็นเฟรมเวิร์กที่ใช้ Rust เป็นพื้นฐาน ซึ่งสามารถสร้างแอปเว็บ เดสก์ท็อป และมือถือจากโค้ดเบสเดียว
    • ตั้งเป้าเป็นเฟรมเวิร์กที่ดีกว่า Flutter
    • มุ่งเน้นการรองรับเว็บแบบฟูลสแตกและการสื่อสารระหว่างเซิร์ฟเวอร์/ไคลเอนต์ที่มี type safety พร้อมให้ความสำคัญกับประสิทธิภาพที่รวดเร็วและประสบการณ์นักพัฒนาที่ดีขึ้น
    • รีลีส 0.6 ครั้งนี้มุ่งเน้นให้ใช้งาน Dioxus ได้ง่ายขึ้น ปรับปรุงประสบการณ์นักพัฒนา และแก้ไขบั๊ก
  • การปรับปรุงฟีเจอร์หลัก

    • รองรับ mobile simulator: เพิ่มความสามารถในการรันแอปบน Android และ iOS simulator รวมถึงอุปกรณ์จริง
    • Magic hot reloading: รองรับ hot reloading สำหรับ formatted string, properties และ rsx!{} ที่ซ้อนกัน
    • Interactive CLI: เขียน Dioxus CLI ใหม่ด้วย UX แบบใหม่เพื่อให้ใช้งานสะดวกขึ้น
    • Inline stack trace: จับ WASM panic และ log มาแสดงในเทอร์มินัลได้โดยตรง
    • Native server function: รองรับ inline server RPC สำหรับแอปเดสก์ท็อปและมือถือ
  • การปรับปรุงประสบการณ์นักพัฒนา

    • Toast และ loading screen: เพิ่ม toast และ loading screen ใหม่ระหว่างการพัฒนาเว็บแอป
    • ปรับปรุง auto-complete: ปรับปรุงความสามารถ auto-complete ของ RSX อย่างมาก
    • ทำให้ระบบ asset เสถียรขึ้น: ทำให้ระบบ asset แบบอิงลิงก์ที่รวมอยู่ใน native app มีเสถียรภาพมากขึ้น
    • Streaming HTML: รองรับการสตรีม suspense และ error boundary จากเซิร์ฟเวอร์ไปยังไคลเอนต์
    • SSG และ ISG: รองรับ static site generation และ incremental static regeneration
    • การจัดการข้อผิดพลาด: ใช้ ? ใน event handler, task และ component เพื่อจัดการข้อผิดพลาด
    • Meta elements: เพิ่มองค์ประกอบ Head, Title, Meta และ Link ใหม่สำหรับตั้งค่าคุณสมบัติของเอกสาร
    • prevent_default แบบ synchronous: จัดการอีเวนต์แบบ synchronous บนทุกแพลตฟอร์ม
    • ตัวจัดการอีเวนต์ onresize: ติดตามขนาดขององค์ประกอบได้โดยไม่ต้องใช้ IntersectionObserver
    • ตัวจัดการอีเวนต์ onvisible: ติดตามการมองเห็นขององค์ประกอบได้โดยไม่ต้องใช้ IntersectionObserver
    • การรวมกับ WGPU: เรนเดอร์ Dioxus เป็น overlay บนพื้นผิว WGPU และ child window
    • dx bundle: รองรับ dx bundle แบบสมบูรณ์สำหรับเว็บ, iOS และ Android
    • โหมด json: ให้ CLI ส่งข้อความออกมาเป็น JSON เพื่อใช้กับเครื่องมือภายนอกและ pipeline CI/CD
    • เทมเพลตใหม่: เพิ่มเทมเพลตเริ่มต้นใหม่ 3 แบบสำหรับแอปข้ามแพลตฟอร์ม
    • บทเรียนและคู่มือเวอร์ชัน nightly: เพิ่มบทเรียนและคู่มือใหม่สำหรับ Dioxus 0.6 และเวอร์ชันถัดไป
    • ต้นแบบ binary patching: ต้นแบบของเอนจิน hot reloading ใหม่ที่เป็น Rust ล้วน
  • ข้อมูลรีลีส

    • Dioxus 0.6 เป็นรีลีสที่ใหญ่ที่สุด โดยมีการ merge pull request มากกว่า 350 รายการและแก้ปัญหา issue ไปหลายร้อยรายการ
    • มีเป้าหมายปรับปรุงคุณภาพของ hot reloading, auto-complete และ asset bundling อย่างมาก
    • ต้องการให้ Dioxus CLI มีความแข็งแรงและใช้งานง่ายยิ่งขึ้น
    • ต้องการรองรับมือถือแบบ first-class โดยผนวกรวมเครื่องมือมือถือเข้าไว้ใน dioxus CLI โดยตรง
  • เครื่องมือบรรทัดคำสั่งแบบโต้ตอบได้

    • Dioxus 0.6 มอบประสบการณ์ CLI ที่ยกเครื่องใหม่ทั้งหมด
    • CLI ใหม่นี้รองรับ live progress bar, animation, ระบบ filter แบบโต้ตอบได้ และความสามารถในการเปลี่ยน log level แบบเรียลไทม์ เป็นต้น
  • รองรับ Android และ iOS

    • ใน Dioxus 0.6 นั้น dioxus CLI รองรับ dx serve --platform ios/android ได้โดยตรง
    • มอบการรองรับแพลตฟอร์มมือถือแบบ first-class และ target สำหรับ Android กับ iOS simulator รองรับความสามารถเช่นเดียวกับเดสก์ท็อป
  • ปรับโฉมเอนจิน hot reloading

    • มีการปรับปรุงครั้งใหญ่ให้กับเอนจิน hot reloading ของ Dioxus
    • รองรับ hot reloading สำหรับ formatted string, rsx block ที่ซ้อนกัน, component property และ Rust expression แบบง่าย
  • ปรับโฉมความสามารถ auto-complete

    • ปรับปรุงความสามารถ auto-complete ของ rsx! {} อย่างมาก
    • ปรับปรุงการรวมเข้ากับ Rust-analyzer เพื่อมอบประสบการณ์ auto-complete ที่ดียิ่งขึ้น
  • Inline WASM stack trace และการรวมระบบ tracing

    • มีการรวมระบบ tracing สำหรับแอป WASM เพื่อจับ panic และ log แล้วส่งไปยังเทอร์มินัล
  • Toast และ loading screen

    • ระหว่างพัฒนาเว็บแอป จะมี loading screen ที่แสดงความคืบหน้าการ build และ toast ที่บอกสถานะการ build
  • ฟูลสแตกบนเดสก์ท็อปและมือถือ

    • ผนวกรวม native app กับ server function เพื่อให้ server function ทำงานได้โดยตรงบน target เดสก์ท็อปและมือถือ
  • ทำให้ระบบ asset Manganis เสถียรขึ้น

    • ทำให้ระบบ asset ใหม่ Manganis มีเสถียรภาพมากขึ้น และแก้ปัญหาบั๊กกับประเด็นด้านประสิทธิภาพหลายรายการ
  • Suspense และ HTML streaming

    • เพิ่ม suspense boundary ซึ่งเป็น core primitive ใหม่สำหรับ async UI
    • Dioxus ฟูลสแตกสามารถสตรีมแต่ละ suspense boundary จากเซิร์ฟเวอร์ได้ ทำให้สตรีมแต่ละ chunk ได้โดยไม่ต้องรอให้หน้าโหลดเสร็จทั้งหมด
  • Static site generation และ ISG

    • รองรับ static site generation และ incremental static generation เพื่อปรับปรุง SEO และลดเวลาโหลดของผู้ใช้
  • องค์ประกอบเอกสาร: Title {}, Link {}, Stylesheet, Meta {}

    • มีองค์ประกอบพิเศษสำหรับโต้ตอบกับอ็อบเจ็กต์เอกสาร HTML ทำให้ตั้งค่าคุณสมบัติของเอกสารได้โดยไม่ต้องเพิ่ม JavaScript
  • การจัดการข้อผิดพลาดด้วยเครื่องหมายคำถาม

    • ตอนนี้ Element เปลี่ยนจาก Option เป็น Result แล้ว ทำให้สามารถใช้รูปแบบการจัดการข้อผิดพลาดทั่วไปของ Rust ใน component ได้
  • prevent_default แบบ synchronous

    • ปรับปรุงให้จัดการอีเวนต์ทั้งหมดแบบ synchronous ได้ จึงไม่จำเป็นต้องใช้ property dioxus_prevent_default อีกต่อไป
  • ตัวจัดการอีเวนต์ onresize และ onvisible

    • มี handler พิเศษที่สามารถติดตามขนาดและการมองเห็นขององค์ประกอบได้ ทำให้สร้างปฏิสัมพันธ์ที่หลากหลายได้โดยไม่ต้องใช้ JavaScript
  • Hybrid WGPU overlay

    • ผ่านความสามารถ "child window" ของ Dioxus desktop ทำให้สามารถรวม native Dioxus app เป็น overlay บนหน้าต่างเดิมได้
  • รองรับการ bundle สำหรับเว็บ, iOS และ Android

    • เพิ่มการรองรับเว็บและมือถือให้กับ dx bundle เพื่อให้ bundle ไปยัง target ที่หลากหลายได้
  • JSON output สำหรับ CI / CLI

    • มีโหมด JSON output สำหรับ CLI ทำให้รับ log ในรูปแบบ JSON ได้
  • เทมเพลตเริ่มต้นใหม่

    • เพิ่มเทมเพลตเริ่มต้นใหม่ 3 แบบสำหรับแอปข้ามแพลตฟอร์ม
  • เอกสารเวอร์ชัน nightly, บทเรียน และคู่มือใหม่

    • มีการยกเครื่องเอกสารและบทเรียนครั้งใหญ่ โดยครอบคลุมพื้นฐานและมุ่งเน้นเรื่องการ deploy
  • พรีวิว in-place binary patching

    • กำลังทดลองเพิ่ม hot reloading สำหรับโค้ด Rust
  • การเปลี่ยนแปลงเล็กน้อย

    • รวมการเปลี่ยนแปลงย่อยหลายอย่าง เช่น รองรับ system tray, custom event loop, แยก dioxus-document และ dioxus-history, รวมถึงทำให้ eval API เรียบง่ายขึ้น
  • อัปเกรดจาก 0.5 ไป 0.6

    • แม้จะมีการเปลี่ยนแปลง API บางส่วน แต่ในกรณีส่วนใหญ่สามารถแก้ไขได้ไม่ยาก
  • บทสรุป

    • รีลีสนี้แก้ปัญหามากมายและปรับปรุงฟีเจอร์หลายด้าน ทำให้ Dioxus 0.6 เป็นรีลีสที่สมบูรณ์ที่สุด
    • จากนี้ไปมีแผนจะเน้นการทำวิดีโอบทเรียน เขียนเอกสาร แก้บั๊ก ปรับปรุงประสิทธิภาพ และร่วมมือกับชุมชน มากกว่าการเพิ่มฟีเจอร์ใหม่

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

 
devsepnine 2024-12-17

ช่วงนี้กำลังใช้ tauri อยู่เหมือนกัน แต่ก็น่าลองอันนี้ดูสักครั้งนะ

 
GN⁺ 2024-12-13
ความเห็นจาก Hacker News
  • ผู้ใช้รายหนึ่งแชร์ประสบการณ์ที่ลองใช้รีลีสใหม่ โดยระบุว่าได้สร้างโปรเจ็กต์ด้วย cargo install และรัน dx serve แต่เกิดข้อผิดพลาดจากคอมไพเลอร์ และคิดว่าถ้าใช้เวิร์กโฟลว์ Rust มาตรฐานก็น่าจะดีบักได้ง่ายกว่า สามารถกด v เพื่อเปิดบันทึกแบบละเอียดได้ แต่ก็ไม่ได้ให้ข้อมูลที่ชัดเจนเพิ่มเติม

  • ผู้ใช้อีกรายบอกว่าตนลองใช้เฟรมเวิร์ก GUI ของ Rust ทุก ๆ 6 เดือน แต่ก็มักเจอข้อผิดพลาดตอนดาวน์โหลดเดโมหรือ playground และมองว่าควรตัดสินใจลงทุนระยะยาวอย่างรอบคอบ

  • มีการระบุว่า Dioxus เป็นเครื่องมือเทคโนโลยีเว็บแพลตฟอร์มเพียงตัวเดียวที่สามารถมอบความสามารถข้ามแพลตฟอร์มได้โดยใช้ JavaScript ให้น้อยที่สุด และมองพัฒนาการของสแตกการเรนเดอร์ WGPU ในแง่บวก

  • มีความเห็นว่า Dioxus ยังขาด ecosystem และไม่มีไลบรารีคอมโพเนนต์ อีกทั้งยังไม่ค่อยมั่นใจกับ virtual DOM จึงกำลังติดตามและใช้งาน Leptos ซึ่งเป็นคู่แข่งอยู่

  • มีผู้ใช้ Dioxus ฝั่งเซิร์ฟเวอร์อยู่ และประเมินว่าวิธีการเขียนคอมโพเนนต์กับประสบการณ์นักพัฒนานั้นดีมาก

  • หลังจากค้นพบและนำ Lustre มาใช้ ก็ระบุว่าไม่นึกอยากใช้อะไรนอกจาก The Elm Architecture อีกเลย ขณะเดียวกันก็กำลังสร้างต้นแบบตัวแก้ไขสถานการณ์ด้วย Iced ของ Rust และเชื่อถือได้เพราะ System76 ใช้มันสร้าง Cosmic

  • มีความเห็นว่านี่คือเฟรมเวิร์กเทคโนโลยีใหม่ที่มีอนาคตมากที่สุด และถ้าสำเร็จก็อาจมาแทนเฟรมเวิร์กอื่นทั้งหมดได้ โดยเน้นที่ประสิทธิภาพ และ Rust ก็เป็นรากฐานด้านความปลอดภัยกับประสิทธิภาพ

  • มีการระบุว่า Dioxus ได้รับเงินทุนจาก venture capital แล้ว จึงควรระวังก่อนจะฝากอนาคตไว้กับมัน อีกทั้งยังมีข้อมูลไม่เพียงพอว่าจำเป็นต้องโอนลิขสิทธิ์หรือมี CLA หรือไม่ และในบรรดาผู้มีส่วนร่วมมีสักกี่คนที่ได้รับเงินเดือน

  • มีข้อเสนอว่าน่าจะปรับปรุงคอนทราสต์ของชื่อโพสต์ให้เข้ากับพื้นหลังของหน้าได้ดียิ่งขึ้น พร้อมตั้งคำถามเปรียบเทียบกับสถานะปัจจุบันของ Qt เรื่องการเข้าถึงและการรองรับหน้าจอ HiDPI อีกทั้งรู้สึกว่ายังขาด binding คุณภาพดีสำหรับภาษานอกเหนือจาก C++ และ Python และมองว่าถ้ามี binding กับเครื่องมือที่ดีกว่านี้ก็น่าจะได้รับความนิยมมากขึ้น

  • มีความเห็นว่าฟีเจอร์ hot reloading ใหม่ยอดเยี่ยมมาก และบอกว่าการต้องรอให้ UI อัปเดตในเฟรมเวิร์กเว็บ Rust อื่น ๆ เป็นปัญหาใหญ่