15 คะแนน โดย GN⁺ 2024-11-22 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • Electrobun มุ่งเป้าที่จะมอบโซลูชันครบวงจรสำหรับการสร้าง อัปเดต และเผยแพร่แอปพลิเคชันเดสก์ท็อปข้ามแพลตฟอร์มที่รวดเร็วมากและมีขนาดเบา ซึ่งเขียนด้วย Typescript
  • ใช้ bun เพื่อรันเมนโปรเซสและบันเดิล Typescript ของ webview พร้อมรวม native binding ที่เขียนด้วย zig
  • ฟีเจอร์หลัก

    • Typescript: สามารถเขียน Typescript สำหรับเมนโปรเซสและ webview ได้ ทำให้งานสะดวกขึ้นด้วยการใช้ภาษาเดียว
    • รวดเร็ว: การแยกระหว่างเมนโปรเซสกับ webview process ช่วยรับประกันทั้งความปลอดภัยและประสิทธิภาพ และทำให้สามารถติดตั้งใช้งาน RPC ที่รวดเร็วและมี type ได้อย่างง่ายดาย
    • เล็ก: ด้วย app bundle แบบแตกไฟล์ตัวเองได้ที่มีขนาดเล็กราว 12MB และอัปเดตแอปที่เล็กได้ถึง 4KB ทำให้ปล่อยอัปเดตได้บ่อยพร้อมประหยัดค่าแบนด์วิดท์
    • ผสานรวมครบถ้วน: มอบเวิร์กโฟลว์ที่ผสานรวมครบถ้วน โดยเริ่มเขียนโค้ดได้ภายใน 5 นาที และนำขึ้นใช้งานได้ภายใน 10 นาที

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

 
tsboard 2024-11-27

ยิ่งได้ลองใช้ Bun มากเท่าไรก็ยิ่งชอบมันมากขึ้นเท่านั้น เหนือสิ่งอื่นใด สิ่งที่น่าประทับใจก็คือมันยังคงยึดมั่นกับเป้าหมายเรื่องการทำงานที่รวดเร็วอย่างซื่อสัตย์มาจนถึงตอนนี้ ผมหวังว่าโปรเจ็กต์นี้จะไปได้สวย

 
aer0700 2024-11-23

หรือว่าจะเป็นหนึ่งในความพยายามเขียนสิ่งที่เดิมพัฒนาด้วย nodejs ขึ้นมาใหม่ด้วย bunjs กันนะ
ยังไม่เคยลองใช้ Bun เลย แถมตอนนี้ก็ทำด้วย node อยู่แล้ว และก็ยังไม่มีแผนจะย้ายของที่ทำไว้ไป Bun ด้วย...
แต่อีก 10 ปีข้างหน้าก็ไม่แน่นะ ยังไงก็น่าจะต้องลองจับดูไว้บ้างครับ

 
tinywolf 2024-11-23

wails ก็ใช้งานเล็กๆ น้อยๆ ได้เหมือนกันครับ

 
pmc7777 2024-11-22

ดีครับที่ได้เห็นความพยายามแนวอื่น ๆ ที่คล้ายกับ Tauri แต่มีทิศทางต่างออกไปปรากฏออกมาบ่อย ๆ

 
GN⁺ 2024-11-22
ความคิดเห็นจาก Hacker News
  • Electrobun คล้ายกับ Tauri แต่ใช้ Zig เพื่อพัฒนาส่วนที่รวดเร็วและเป็นเนทีฟ และมุ่งเน้นไปที่ส่วนฟรอนต์เอนด์/UI มากกว่า

    • นี่เป็นข้อเสนอที่น่าสนใจ แต่ต้องใช้ปริมาณงานมหาศาล
  • ผู้พัฒนา Electrobun ระบุว่าโปรเจ็กต์ยังอยู่ในระยะเริ่มต้น และโร้ดแมปจำเป็นต้องอัปเดต

    • ใช้ system webview แบบเดียวกับ Tauri และไม่ได้บันเดิล Chromium
    • ใช้ Bun เป็น main process แบบเดียวกับ Electron ทำให้ใช้ TypeScript ได้ทั้งใน main และ browser context
    • native bindings ที่เขียนด้วย C/Objective-C ถูกห่อด้วย Zig wrapper และรันโดยโปรเซส Bun
    • ตั้งเป้าเป็น cross-platform แต่ให้ความสำคัญกับเสถียรภาพก่อน
    • CLI จัดการเรื่องอัปเดต, code signing ฯลฯ และสามารถสร้าง build artifacts เพื่ออัปโหลดไปยัง S3 หรือ static file host ได้
    • สร้างอัปเดตขนาด 4KB โดยอัตโนมัติผ่านการใช้งาน bsdiff ที่ปรับแต่งด้วย Zig
    • ลดขนาดการดาวน์โหลดเริ่มต้นให้ต่ำที่สุดด้วยกลไก self-extract ที่เขียนด้วย Zig ของตัวเองซึ่งใช้ Zstd
    • มี encrypted RPC mechanism ที่เพียงแค่ต้องเขียน method signatures และ handlers ระหว่างโปรเซส Bun กับ browser process
    • ผ่านการทำ OOPIF ทำให้สามารถฝัง browser context แบบแยกส่วนที่ทั้งแรงและใช้งานง่ายเป็นองค์ประกอบ HTML <electrobun-webview> ได้
  • มีความเห็นที่สงสัยว่าฟังก์ชันเฉพาะของแต่ละ OS ถูกจัดการด้วย TypeScript ล้วนอย่างไร และเมื่อเทียบกับ Tauri แล้วมีความต่างด้านขนาดและความเร็วอย่างไร

  • มีคำถามเกี่ยวกับ rendering engine ของ Electrobun และแม้ชื่อโปรเจ็กต์จะชวนให้นึกถึง Electron แต่ก็ไม่ได้มีการกล่าวถึง

    • แอป Electrobun Playground มีขนาด 50.4MB ซึ่งส่วนใหญ่เป็น Bun runtime
  • มีความเห็นว่าการเฝ้าดูการเติบโตของ Electrobun เป็นเรื่องน่าสนใจ แม้จะยังไม่เข้าร่วมตอนนี้ แต่ก็มองว่าเป็นโปรเจ็กต์ที่ยอดเยี่ยม

  • มีความเห็นว่า Electrobun คือ Electron ที่แทน Node.js ด้วย Bun และแทน Chromium ด้วย WebView

  • มีความเห็นว่ายิ่งมีทางเลือกสำหรับการสร้างแอป cross-platform มากเท่าไรก็ยิ่งดี

  • มีความเห็นสงสัยว่า Electrobun เป็นเพียงอีกหนึ่งเฟรมเวิร์กที่อิงกับ webview เช่น NeutralinoJS, Electrino และ DeskGap หรือไม่ และนอกจากใช้ Bun แทน Node แล้วมีข้อดีอะไรอีก

    • มีข้อเสนอแนะว่าสำหรับแอปเดสก์ท็อป cross-platform ที่เบามากจริง ๆ ควรใช้ native framework ที่ไม่อิง webview เช่น Qt, GTK, wxWidgets และ FLTK 1.4
  • มีความเห็นที่กังวลเรื่องปัญหาด้านประสิทธิภาพจากการแยกระหว่าง main process กับ webview process

    • ต้องใช้ IPC bridge เพื่อแชร์ข้อมูล และนั่นหมายความว่าข้อมูลที่แชร์ทั้งหมดต้องถูกคัดลอก
    • ตัวอย่างเช่น เมื่อใช้ ffmpeg เพื่อถอดรหัสวิดีโอ จะต้องคัดลอกภาพที่ถอดรหัสแล้วในแต่ละเฟรมก่อนเรนเดอร์
  • มีความเห็นว่าการใช้ Bun เป็นทางเลือกแทน Node.js ใน Electron นั้นดี แต่การดีกว่า Electron ไม่ใช่มาตรฐานที่สูงนัก

    • ระบุว่ากำลังรอให้ Bun ทำงานบน FreeBSD ได้ และใส่ไว้ในรายการสิ่งที่อยากได้ช่วงคริสต์มาส