Referensi API
Tentang Referensi Ini
Section titled “Tentang Referensi Ini”Ini adalah referensi API lengkap untuk Wails v3. Dokumen ini mendokumentasikan setiap tipe, metode, dan opsi publik yang tersedia di framework.
Organisasi:
- Application - API inti aplikasi
- Window - Pembuatan dan pengelolaan window
- Menu - Menu aplikasi, konteks, dan system tray
- Events - Sistem event dan event bawaan
- Dialogs - Dialog file dan pesan
- Frontend Runtime - API frontend runtime
- CLI - Antarmuka baris perintah
Konvensi API
Section titled “Konvensi API”Konvensi API Go - Untuk pengembang yang baru mengenal Go
Penamaan
Section titled “Penamaan”- Tipe: PascalCase (mis.,
WebviewWindow) - Metode: PascalCase (mis.,
SetTitle()) - Opsi: Struct PascalCase (mis.,
WindowOptions) - Konstanta: PascalCase (mis.,
WindowStartStateMaximised)
Penanganan Error
Section titled “Penanganan Error”Sebagian besar metode yang dapat gagal mengembalikan error sebagai nilai kembalian terakhir. app.Run() memblokir hingga aplikasi keluar dan mengembalikan error startup jika ada:
if err := app.Run(); err != nil { log.Fatal(err)}Konstruksi window tidak mengembalikan error — app.Window.New() mengembalikan *WebviewWindow secara langsung.
Context
Section titled “Context”Metode lifecycle service menerima context.Context:
func (s *MyService) ServiceStartup(ctx context.Context, options application.ServiceOptions) error { // ctx dibatalkan saat aplikasi sedang dimatikan. return nil}Context lifetime aplikasi tersedia melalui app.Context(). Tidak ada RunWithContext — panggil app.Run().
Pola Opsi
Section titled “Pola Opsi”Konfigurasi menggunakan struct opsi:
app := application.New(application.Options{ Name: "My App", Description: "A demo application", Services: []application.Service{ application.NewService(&MyService{}), },})Konvensi API JavaScript
Section titled “Konvensi API JavaScript”Penamaan
Section titled “Penamaan”- Fungsi: camelCase (mis.,
setTitle()) - Konstanta: SCREAMING_SNAKE_CASE (mis.,
WINDOW_EVENT_FOCUS)
Async secara Default
Section titled “Async secara Default”Semua pemanggilan metode Go mengembalikan Promise:
// Async/await (direkomendasikan)const result = await MyService.DoSomething()
// Promise chainMyService.DoSomething() .then(result => console.log(result)) .catch(error => console.error(error))Penanganan Error
Section titled “Penanganan Error”Error Go menjadi exception JavaScript:
try { await MyService.MightFail()} catch (error) { console.error('Go error:', error)}Type Safety
Section titled “Type Safety”Definisi TypeScript dibuat secara otomatis:
// Sepenuhnya bertipeimport { Greet } from './bindings/GreetService'
const message: string = await Greet("World")Struktur Paket
Section titled “Struktur Paket”github.com/wailsapp/wails/v3/pkg/├── application/ # Paket aplikasi inti│ ├── application.go # Tipe App│ ├── webview_window.go # Pengelolaan window│ ├── menu.go # Tipe menu│ ├── event_manager.go # Sistem event│ └── dialogs.go # API dialog├── events/ # Konstanta event└── services/ # Service bawaan ├── dock/ # macOS dock (termasuk dukungan badge) ├── fileserver/ # Service file-server ├── kvstore/ # Key/value store ├── log/ # Service logging terstruktur ├── notifications/ # Service notifikasi └── sqlite/ # Service SQLitePath Import
Section titled “Path Import”import ( "github.com/wailsapp/wails/v3/pkg/application" "github.com/wailsapp/wails/v3/pkg/events")JavaScript
Section titled “JavaScript”// Binding yang dibuat otomatisimport { MyMethod } from './bindings/MyService'
// API runtimeimport { Events, Window } from '@wailsio/runtime'Referensi Tipe
Section titled “Referensi Tipe”Tipe Umum
Section titled “Tipe Umum”// Applicationtype App struct { /* ... */ }type Options struct { /* ... */ }
// Windowtype WebviewWindow struct { /* ... */ } // mengimplementasikan antarmuka Windowtype WebviewWindowOptions struct { /* ... */ }
// Menutype Menu struct { /* ... */ }type MenuItem struct { /* ... */ }
// Events — tidak ada tipe Event generik; event ditentukan tipenya berdasarkan sumber.type ApplicationEvent struct { /* ... */ }type WindowEvent struct { /* ... */ }type CustomEvent struct { /* ... */ }type EventListener struct { /* ... */ }
// Dialogstype OpenFileDialogOptions struct { /* ... */ }type SaveFileDialogOptions struct { /* ... */ }// Window runtimeinterface WindowOptions { title?: string width?: number height?: number // ...}
// Eventstype EventCallback = (data: any) => void
// Bindings (dibuat otomatis)export function MyMethod(arg: string): Promise<string>Perbedaan Platform
Section titled “Perbedaan Platform”Beberapa API berperilaku berbeda di berbagai platform:
| Fitur | Windows | macOS | Linux |
|---|---|---|---|
| Menu Aplikasi | Menu bar window | Menu bar global | Menu bar window |
| System Tray | Notification area | Menu bar | System tray |
| Dock | N/A | ✅ Tersedia | N/A |
| Dialog file | Native | Native | Native (GTK) |
| Transparansi | ✅ Penuh | ✅ Penuh | ⚠️ Terbatas |
Perilaku khusus platform didokumentasikan di setiap bagian API.
Versioning
Section titled “Versioning”Wails v3 mengikuti semantic versioning:
- Major (v3.x.x): Perubahan breaking
- Minor (v3.x.x): Fitur baru, kompatibel ke belakang
- Patch (v3.x.x): Perbaikan bug, kompatibel ke belakang
Status saat ini: Alpha (API stabil, penyempurnaan berkelanjutan)
Kebijakan Deprecation
Section titled “Kebijakan Deprecation”Ketika API di-deprecate:
- Ditandai di dokumentasi dengan pemberitahuan deprecation
- Alternatif disediakan dengan panduan migrasi
- Dipertahankan selama 1 versi major sebelum dihapus
- Peringatan compiler (jika memungkinkan)
Stabilitas API
Section titled “Stabilitas API”API Stabil ✅
Section titled “API Stabil ✅”API ini stabil dan aman untuk penggunaan produksi:
- API aplikasi inti
- Pengelolaan window
- Sistem menu
- Sistem event
- Dialog file
- Service bindings
API Tidak Stabil ⚠️
Section titled “API Tidak Stabil ⚠️”API ini dapat berubah sebelum rilis final:
- Beberapa opsi window lanjutan
- Fitur khusus platform
- Fitur eksperimental
API tidak stabil ditandai dalam dokumentasi.
Mendapatkan Bantuan
Section titled “Mendapatkan Bantuan”Pertanyaan API
Section titled “Pertanyaan API”- Periksa referensi ini - Dokumentasi API lengkap
- Periksa contoh - Contoh di GitHub
- Cari di Discord - Server Discord
- Tanya komunitas - Channel #help di Discord
Melaporkan Masalah API
Section titled “Melaporkan Masalah API”Menemukan bug atau inkonsistensi?
- Periksa issue yang ada - GitHub issues
- Buat laporan detail - Sertakan kode, error, platform
- Sediakan reproduksi - Contoh minimal yang mendemonstrasikan masalah
Dokumentasi Terkait
Section titled “Dokumentasi Terkait”- Tutorial - Belajar dengan membangun aplikasi nyata
- Panduan - Panduan berorientasi tugas untuk skenario umum
- Fitur - Dokumentasi fitur per fitur
- Contoh - Contoh kode yang berfungsi di GitHub
Jelajahi API: Gunakan navigasi di sebelah kiri untuk mengeksplorasi API tertentu.