Wails: رهان Golang على تطبيقات سطح المكتب للتفوق على Electron

원제 · Wails: Golang's Bet On Desktop Grade Apps To Beat Electron

7:023분 읽기Better Stack2026. 07. 25.컴퓨터/소프트웨어 · AI/미래기술

핵심 요약

يوفر إطار Wails بديلاً خفيف الوزن لإطار Electron بحجم حزمة 52 ميجابايت وأداء عالٍ بالاعتماد على Go ومحرك العرض الأصلي للنظام، لكنه يتطلب كتابة كود بلغات أصلية مثل Objective-C عند غياب مكتبات النظام البيئي جاهزة الاستخدام.

하이라이트

  • تعتمد تقنية Wails على لغة Go في الخلفية البرمجية مع استخدام محرك العرض الأصلي لكل نظام تشغيل، مما يلغي الحاجة لتضمين متصفح Chromium.

  • يبلغ حجم حزمة التطبيق المجمع باستخدام Wails حوالي 52 ميجابايت، مقارنة بـ 57 ميجابايت مع Tauri و324 ميجابايت مع Electron.

  • يسجل Wails زمن تشغيل عادي قدره 395 ميلي ثانية وبدءاً بارداً بزمن 2,337 ميلي ثانية، بينما ينفذ تسجيل الشاشة بأداء أعلى من Electron عبر الاستدعاء المباشر لإطار CaptureKit.

  • ينتج أمر wails dev ملفات تعريفات TypeScript تلقائياً في الواجهة الأمامية عند إجراء أي تعديل على دالّة في ملفات Go.

  • يتطلب تطوير ميزات مثل التقاط الشاشة في Wails كتابة نحو 450 سطراً من كود Objective-C وربطها عبر Cgo لعدم توفر مكتبات جاهزة في نظام Go البيئي.

타임라인

  1. معمارية Wails وآلية عمل الواجهة الأمامية والفي الخلفية

    تعتمد التقنية على نفس مفهوم Tauri في تجنب تضمين Chromium لتقليل استهلاك الموارد وحجم الحزمة. تُستدعى واجهات برمجة التطبيقات النظامية التي تديرها Golang مباشرة من عرض الويب للواجهة الأمامية.

    • تجمع تقنية Wails بين خلفية برمجية بلغة Go وواجهة أمامية تعرض عبر محرك Webview الأصلي الخاص بنظام التشغيل.
    • تنتج Wails تطبيقات متوافقة مع نظامي ماك ووندوز بحجم حزمة صغير نتيجة عدم تضمين متصفح مدمج داخل التطبيق.
  2. هيكل المشروع والربط التلقائي للأنواع مع TypeScript

    تُعرف إعدادات النافذة مثل العرض والارتفاع ولون الخلفية والخصائص الخاصة بنظام ماك داخل دالة main في ملف Go الرئيسي. تتوفر الدوال المعرفة في الخلفية البرمجية مباشرة للواجهة الأمامية المستندة إلى React عبر ملفات جافاسكريبت المنسوجة تلقائياً.

    • يحتوي المجلد الرئيسي على ملفات الواجهة الأمامية في مجلد frontend وملف المدخل الرئيسي main.go للتحكم بخصائص النافذة.
    • يؤدي تشغيل أمر wails dev إلى إنشاء ملفات تعريفات TypeScript وإعادة تجميع التطبيق تلقائياً بمجرد تعديل ملفات Go.
  3. مقارنة الأداء وحجم الحزمة وسرعة التشغيل بين Wails وTauri وElectron

    تظهر المقارنات التقنية تكافؤاً كبيراً بين Wails وTauri في تقليل حجم الحزمة وأداء وقت التشغيل بسبب استخدام محرك العرض الأصلي للنظام بدلاً من Chromium. يتفوق أداء تسجيل الشاشة عند استخدام واجهات النظام الأصلية وتفادي نقل البيانات عبر الجسر الوسيط إلى الواجهة الأمامية.

    • يبلغ حجم حزمة Wails حوالي 52 ميجابايت مقارنة بـ 57 ميجابايت لـ Tauri و324 ميجابايت لـ Electron.
    • يحقق Wails متواسط زمن تشغيل قدره 395 ميلي ثانية وزمن بدء بارد يبلغ 2,337 ميلي ثانية.
    • يعزز الاستدعاء المباشر لحزمة CaptureKit في ماك أداء تسجيل الشاشة في Wails وTauri مقارنة بنقل البيانات عبر الجسر في Electron.
  4. تجربة المطور والنظام البيئي للمكتبات بين Go وRust

    استلزم بناء أداة تسجيل الشاشة باستخدام Wails كتابة نحو 450 سطراً من كود Objective-C داخل ملفات .m وتصديرها لدوال C لربطها بـ Go. بينما توفر مكتبات Rust الجاهزة في Tauri وصولاً مباشراً لواجهات النظام دون الحاجة لبناء طبقة ربط مخصصة.

    • تتطلب Wails استخدام ميزة Cgo وكتابة كود Objective-C للوصول إلى أطر عمل آبل الأصلية لعدم توفر مكتبات تغليف جاهزة بلغة Go.
    • يوفر النظام البيئي لـ Rust مكتبات جاهزة كـ Crates تغلف واجهات CaptureKit بالكامل، مما يلغي الحاجة لكتابة كود C أصلي.

설명

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

커뮤니티 글

모든 글 보기
이 영상에 대해 글쓰기