Referensi API
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
Konvensi API Go - Untuk pengembang yang baru mengenal Go
Penamaan
- Tipe: PascalCase (mis.,
WebviewWindow) - Metode: PascalCase (mis.,
SetTitle()) - Opsi: Struct PascalCase (mis.,
WindowOptions) - Konstanta: PascalCase (mis.,
WindowStartStateMaximised)
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
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
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
Penamaan
- Fungsi: camelCase (mis.,
setTitle()) - Konstanta: SCREAMING_SNAKE_CASE (mis.,
WINDOW_EVENT_FOCUS)
Async secara Default
Semua pemanggilan metode Go mengembalikan Promise:
// Async/await (direkomendasikan)
const result = await MyService.DoSomething()
// Promise chain
MyService.DoSomething()
.then(result => console.log(result))
.catch(error => console.error(error))Penanganan Error
Error Go menjadi exception JavaScript:
try {
await MyService.MightFail()
} catch (error) {
console.error('Go error:', error)
}Type Safety
Definisi TypeScript dibuat secara otomatis:
// Sepenuhnya bertipe
import { Greet } from './bindings/GreetService'
const message: string = await Greet("World")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
Go
import (
"github.com/wailsapp/wails/v3/pkg/application"
"github.com/wailsapp/wails/v3/pkg/events"
)JavaScript
// Binding yang dibuat otomatis
import { MyMethod } from './bindings/MyService'
// API runtime
import { Events, Window } from '@wailsio/runtime'Referensi Tipe
Tipe Umum
// Application
type App struct { /* ... */ }
type Options struct { /* ... */ }
// Window
type WebviewWindow struct { /* ... */ } // mengimplementasikan antarmuka Window
type WebviewWindowOptions struct { /* ... */ }
// Menu
type 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 { /* ... */ }
// Dialogs
type OpenFileDialogOptions struct { /* ... */ }
type SaveFileDialogOptions struct { /* ... */ }// Window runtime
interface WindowOptions {
title?: string
width?: number
height?: number
// ...
}
// Events
type EventCallback = (data: any) => void
// Bindings (dibuat otomatis)
export function MyMethod(arg: string): Promise<string>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
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: Beta (API stabil, penyempurnaan berkelanjutan)
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
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 ⚠️
API ini dapat berubah sebelum rilis final:
- Beberapa opsi window lanjutan
- Fitur khusus platform
- Fitur eksperimental
API tidak stabil ditandai dalam dokumentasi.
Mendapatkan Bantuan
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
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
- 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.