15 điểm bởi GN⁺ 2024-11-22 | 5 bình luận | Chia sẻ qua WhatsApp
  • Electrobun hướng tới việc cung cấp một giải pháp hoàn chỉnh để xây dựng, cập nhật và triển khai các ứng dụng desktop siêu nhanh, nhẹ và đa nền tảng được viết bằng Typescript
  • Sử dụng bun để chạy tiến trình chính, đóng gói webview Typescript, đồng thời bao gồm các native binding được viết bằng zig
  • Tính năng chính

    • Typescript: Có thể viết Typescript cho tiến trình chính và webview, giúp làm việc thuận tiện chỉ với một ngôn ngữ.
    • Nhanh: Việc cô lập giữa tiến trình chính và tiến trình webview đảm bảo bảo mật và hiệu năng, đồng thời có thể dễ dàng triển khai RPC nhanh và có kiểu dữ liệu.
    • Nhỏ gọn: Với gói ứng dụng tự giải nén chỉ khoảng 12MB và bản cập nhật ứng dụng nhỏ tới 4KB, có thể phát hành thường xuyên trong khi giảm chi phí băng thông.
    • Tích hợp hoàn chỉnh: Cung cấp quy trình làm việc tích hợp hoàn chỉnh, cho phép bắt đầu viết mã trong vòng 5 phút và triển khai trong vòng 10 phút.

5 bình luận

 
tsboard 2024-11-27

Càng dùng Bun tôi càng thực sự thích nó hơn. Trên hết, việc nó vẫn kiên định theo đuổi mục tiêu hoạt động nhanh cho đến tận bây giờ khiến tôi thấy rất ấn tượng. Tôi hy vọng dự án này sẽ thành công.

 
aer0700 2024-11-23

Có lẽ đây là một trong những nỗ lực thử viết lại những thứ vốn được phát triển bằng nodejs sang bunjs? Tôi vẫn chưa dùng thử Bun, hơn nữa hiện đã làm bằng node và cũng không có kế hoạch chuyển những gì đã làm sang Bun... Biết đâu 10 năm nữa lại khác. Dù sao chắc cũng nên thử đụng vào xem.

 
tinywolf 2024-11-23

wails cũng khá ổn để dùng lặt vặt.

 
pmc7777 2024-11-22

Thật tuyệt khi thường xuyên thấy những nỗ lực mang sắc thái khác, dù giống Tauri nhưng vẫn khác.

 
GN⁺ 2024-11-22
Ý kiến trên Hacker News
  • Electrobun giống Tauri, nhưng dùng Zig để triển khai các phần nhanh và native, đồng thời tập trung nhiều hơn vào phần frontend/UI

    • Đây là một đề xuất thú vị, nhưng đòi hỏi khối lượng công việc rất lớn
  • Nhà phát triển của Electrobun cho biết dự án vẫn đang ở giai đoạn đầu và lộ trình cần được cập nhật

    • Giống Tauri, nó sử dụng system webview và không đóng gói kèm Chromium
    • Giống Electron, nó dùng Bun làm main process để sử dụng TypeScript trong cả ngữ cảnh main và browser
    • Các native binding viết bằng C/Objective-C được bọc bằng wrapper Zig để tiến trình Bun chạy
    • Dự án hướng tới cross-platform, nhưng hiện ưu tiên sự ổn định
    • CLI xử lý cập nhật, code signing, v.v. và có thể tạo build artifact để tải lên S3 hoặc static file host
    • Tự động tạo bản cập nhật chỉ 4KB nhờ triển khai bsdiff được tối ưu bằng Zig
    • Giảm kích thước tải ban đầu xuống mức tối thiểu bằng cơ chế self-extract do Zig tự xây dựng, sử dụng Zstd
    • Cung cấp cơ chế RPC được mã hóa, nơi chỉ cần viết method signature và handler giữa tiến trình Bun và tiến trình trình duyệt
    • Nhờ triển khai OOPIF, có thể nhúng các browser context cô lập có hiệu năng cao và dễ dùng dưới dạng phần tử HTML <electrobun-webview>
  • Có ý kiến thắc mắc cách nó quản lý các tính năng theo từng hệ điều hành chỉ bằng TypeScript thuần, và khác biệt về kích thước lẫn tốc độ so với Tauri ra sao

  • Có câu hỏi về rendering engine của Electrobun, và dù tên dự án gợi nhắc đến Electron nhưng điều đó không được đề cập

    • Ứng dụng Electrobun Playground có kích thước 50.4MB, trong đó phần lớn là Bun runtime
  • Có ý kiến cho rằng sẽ rất thú vị khi theo dõi sự phát triển của Electrobun; chưa tham gia ngay, nhưng đánh giá đây là một dự án tuyệt vời

  • Có ý kiến cho rằng Electrobun là Electron thay Node.js bằng Bun và thay Chromium bằng WebView

  • Có ý kiến cho rằng càng có nhiều lựa chọn thay thế để xây dựng ứng dụng cross-platform thì càng tốt

  • Có ý kiến thắc mắc liệu Electrobun có chỉ là một framework dựa trên webview khác như NeutralinoJS, Electrino hay DeskGap hay không, và ngoài việc dùng Bun thay cho Node thì nó có ưu điểm gì

    • Có đề xuất rằng để làm ứng dụng desktop cross-platform thật sự nhẹ, nên dùng các native framework không dựa trên webview như Qt, GTK, wxWidgets, FLTK 1.4
  • Có ý kiến lo ngại về vấn đề hiệu năng do sự tách biệt giữa main process và webview process

    • Phải dùng IPC bridge để chia sẻ dữ liệu, và điều này buộc phải sao chép toàn bộ dữ liệu được chia sẻ
    • Ví dụ, khi dùng ffmpeg để giải mã video, cần sao chép ảnh đã giải mã của từng khung hình trước khi render
  • Có ý kiến cho rằng dùng Bun như một lựa chọn thay thế cho Electron là tốt, nhưng vượt hơn Electron thì vẫn là một tiêu chuẩn khá thấp

    • Họ đang chờ Bun hoạt động trên FreeBSD, và nói rằng điều đó nằm trong danh sách điều ước Giáng sinh