Wails: Taruhan Golang pada Aplikasi Kelas Desktop untuk Mengalahkan Electron
원제 · Wails: Golang's Bet On Desktop Grade Apps To Beat Electron
핵심 요약
Wails memangkas ukuran bundel aplikasi desktop hingga 52 MB dengan memanfaatkan mesin rendering native OS dan Go, meskipun pengembang harus menulis sekitar 450 baris kode Objective-C native untuk fitur tingkat lanjut seperti ScreenCaptureKit.
하이라이트
Ukuran bundel aplikasi Wails sebesar 52 MB dan Tauri 57 MB, jauh lebih kecil dibandingkan Electron yang mencapai 324 MB karena tidak menyertakan Chromium.
Rata-rata waktu startup Wails berada di angka 395 md, Tauri 410 md, dan Electron 350 md.
Dalam pengujian cold start dengan pembersihan cache, Electron mencatatkan waktu tercepat 1.890 md, diikuti Tauri 2.049 md dan Wails 2.337 md.
Fitur Cgo di Go memungkinkan integrasi kode Objective-C native sekitar 450 baris untuk memanggil API ScreenCaptureKit Apple secara langsung.
Perubahan kode pada file backend Go mengompilasi ulang dan me-render ulang definisi TypeScript di front-end secara otomatis saat menjalankan perintah wails dev.
타임라인
Arsitektur dan Cara Kerja Wails
Pengembangan aplikasi desktop dengan Wails menggabungkan fleksibilitas antarmuka web dan efisiensi backend Go. Penggunaan kembali mesin rendering native milik sistem operasi meniru pola kerja Tauri, sehingga membedakannya secara langsung dari Electron yang membawa serta browser Chromium.
- Wails menggunakan Go untuk logika backend dan webview native platform untuk tampilan front-end.
- Aplikasi Wails tidak menyematkan mesin browser Chromium ke dalam bundel akhir.
- Pengoperasian API native dikelola langsung melalui Golang untuk menghasilkan aplikasi lintas platform Windows dan Mac.
Struktur Proyek dan Integrasi Otomatis TypeScript
Struktur berkas Wails memisahkan komponen antarmuka React di folder front-end dan konfigurasi aplikasi pada file main.go. Sinkronisasi antara backend dan front-end terjadi secara otomatis melalui pemutakhiran berkas binding TypeScript saat proses wails dev berjalan.
- Kode front-end React tersimpan terpisah di folder khusus, sementara logika aplikasi utama berjalan dari file main.go.
- Perubahan fungsi di sisi Go secara otomatis memperbarui pustaka binding TypeScript di front-end.
- Perintah wails dev memicu kompilasi ulang otomatis backend sekaligus menyegarkan antarmuka aplikasi.
Perbandingan Ukuran Bundel, Startup, dan Performa
Penghilangan komponen Chromium memberikan keunggulan signifikan pada ukuran bundel Wails dan Tauri. Namun, Electron mencatatkan waktu cold start yang lebih cepat. Penggunaan CaptureKit native Apple secara langsung menghindari overhead pengiriman data melintasi bridge yang biasa terjadi pada antarmuka webview Electron.
- Ukuran bundel Wails mencapai 52 MB, Tauri 57 MB, dan Electron 324 MB.
- Electron memimpin waktu cold start pada 1.890 md, lebih cepat dibandingkan Tauri sebesar 2.049 md dan Wails sebesar 2.337 md.
- Perekaman layar pada Wails dan Tauri menunjukkan performa runtime lebih tinggi dibanding Electron karena memanfaatkan CaptureKit native Mac.
Pengalaman Developer dan Integrasi Cgo Native
Pengalaman pengembang pada Wails dipengaruhi oleh ketersediaan pustaka ekosistem yang belum selengkap Rust pada Tauri. Penggunaan Cgo menuntut penulisan kode C atau Objective-C secara langsung di file .m guna menjangkau fungsi sistem native, yang memberikan kontrol penuh atas kode sumber dengan konsekuensi tambahan volume kode.
- Tauri menyediakan crate Rust siap pakai seperti screen capture kit untuk integrasi API Apple.
- Wails membutuhkan penulisan sekitar 450 baris kode Objective-C native menggunakan fitur Cgo untuk menjangkau API ScreenCaptureKit.
- Pemilihan antara Wails dan Tauri bergantung pada preferensi bahasa pemrograman antara Go dan Rust serta kesiapan ekosistem pustaka pendukung.
설명
You already write Go, so why bundle a whole Chromium to ship a desktop app? Wails builds cross-platform desktop apps on the system webview, 52 MB against Electron's 324. The catch is the developer experience: where Tauri leans on Rust crates, Go can leave you hand-writing Objective-C. Worth it if you're choosing a desktop stack. 🔗 Relevant Links https://wails.io https://github.com/wailsapp/wails ❤️ More about us Radically better observability stack: https://betterstack.com/ Written tutorials: https://betterstack.com/community/ Example projects: https://github.com/BetterStackHQ 📱 Socials Twitter: https://twitter.com/betterstackhq Instagram: https://www.instagram.com/betterstackhq/ TikTok: https://www.tiktok.com/@betterstack LinkedIn: https://www.linkedin.com/company/betterstack 📌 Chapters: 0:00 What is Wails? 0:33 How Wails works (Go + native webview) 1:06 Demo: the screen recorder app 1:29 Project structure: main.go and the frontend 1:57 React frontend and auto-generated bindings 2:50 Live reload with wails dev 3:24 Bundle size: Wails vs Tauri vs Electron 4:07 Startup time 4:36 Runtime performance 5:07 Developer experience 5:37 Writing Objective-C with CGo 6:07 Verdict: Wails or Tauri? 6:40 Outro
