suji - giải pháp thay thế Electron
(github.com/ohah)Một thứ giống Electron được tạo bằng Zig.
Tiêu đề thực ra chỉ viết cho ngầu thôi, nhưng về cơ bản đây là một framework desktop làm bằng Zig.
Tôi nghĩ Electron thực sự là kiểu ứng dụng mà một khi phát triển app desktop thì gần như không thể tránh khỏi.
Đặc biệt khi phải đồng thời cân nhắc môi trường Mac và Windows, và muốn có năng suất phát triển cao, tôi thấy khó có framework nào hấp dẫn như Electron.
Có thể tận dụng nguyên hệ sinh thái JS, đã được thị trường kiểm chứng (vscode, slack, discord v.v.)
Vì tính đa dụng và ưu điểm của nó lớn đến mức có rất nhiều nơi sử dụng, nên nhược điểm cũng bị biết đến nhiều và cũng là framework bị chê rất nhiều.
Tôi cũng là một trong những người dùng có những bất mãn như vậy,
Vì không thích điều đó nên tôi đã thử Tauri, nhưng Tauri cũng có
những giới hạn cố hữu(?) của system webview, và khi dùng Tauri thì ngôn ngữ backend bị giới hạn ở Rust,
Dùng Electron thì bị giới hạn ở Node,
Dùng Wails thì bị giới hạn ở Go — điều đó làm tôi không thích.
Dĩ nhiên nếu dùng FFI thì vẫn có thể đưa các ngôn ngữ khác vào, nhưng...
Thực ra, nhất là trong thời đại như hiện nay khi rào cản ngôn ngữ đã giảm đi rất nhiều, tôi không thích việc framework lại áp đặt ràng buộc về ngôn ngữ.
zig, rust, go, lua, node
đều có thể được chọn làm ngôn ngữ backend riêng, đồng thời cũng có thể chọn nhiều ngôn ngữ cùng lúc để cấu hình nhiều backend.
Tôi dự định sẽ tiếp tục bổ sung thêm các ngôn ngữ backend nếu có thể.
Cả python và Ruby nữa.
Vì có thể đưa nhiều ngôn ngữ vào, nên các backend ngôn ngữ khác nhau cũng có thể giao tiếp với nhau qua IPC.
Ví dụ khi gọi SQLite, ở Node
thì thường phải cài better-sqlite3, nhưng trong trường hợp SQLite, nó cũng được tích hợp như một plugin built-in, và có đặc điểm là Node gọi trực tiếp sang Zig để sử dụng.
Hiện tại đã có thể build cho mobile, nhưng ngoài Mac ra thì các nền tảng còn lại vẫn chưa ổn định.
Chỉ riêng iOS thì theo chính sách không thể dùng Node làm ngôn ngữ backend.
Hiện tại trên Mac đã ở trạng thái có thể build thực tế và đưa vào sản phẩm, còn Windows và Linux thì cần bổ sung thêm một số phần.
Mobile cũng đang được lên kế hoạch hỗ trợ.
Vì những nhược điểm của system webview mà tôi gặp ở Tauri
Nên trên Mac tôi không định dùng system webview.
API và cách dùng được làm cho giống API của Electron nhiều nhất có thể,
Và vì có tài liệu cùng spec dễ để AI phát triển, nên thực ra chỉ cần gắn link tài liệu vào là AI có thể tự kiểm chứng đến tận E2E, vì vậy có thể xem đây là framework có năng suất AI áp đảo hơn hẳn so với các framework cạnh tranh(?) khác.
Thực ra chỉ là vì bực Electron và Tauri nên tôi làm ra nó,
Cá nhân tôi giờ khi làm công cụ DX hay app desktop thì đều dùng suji để phát triển,
Có thể là do tôi đo sai, nhưng tôi còn hài lòng hơn vì cấu trúc này cho phép giao tiếp giữa các ngôn ngữ theo cách nhanh hơn cả việc gọi thông qua FFI.
Khi làm app đơn giản và muốn nhanh chóng tạo ra thứ gì đó mà không bị ràng buộc bởi ngôn ngữ, tôi cảm thấy nó còn nhanh hơn Electron hay Tauri, nên cá nhân tôi khá hài lòng.
Nhưng tôi cũng tò mò không biết có phải chỉ vì chính tôi làm ra nên mới thấy hài lòng hay không, và cũng muốn nghe xem mọi người nghĩ gì về ý tưởng cũng như cách tiếp cận này nên đăng lên đây!
Chưa có bình luận nào.