Menggunakan Framework Frontend Lain
Wails menyediakan template starter bawaan untuk kumpulan framework yang sengaja dibuat kecil:
| Template | Bahasa |
|---|---|
vanilla |
TypeScript (default) |
vanilla-js |
JavaScript |
react |
TypeScript |
react-js |
JavaScript |
vue |
TypeScript |
svelte |
TypeScript |
Itu tidak berarti hanya itulah pilihan Anda. Frontend aplikasi Wails hanyalah proyek web — apa pun yang menghasilkan HTML/CSS/JS statis akan berfungsi. Jika framework pilihan Anda (Solid, Preact, Lit, Qwik, SvelteKit, Angular, …) belum memiliki template, Anda dapat membuat scaffold sendiri dalam beberapa menit.
Cara direktori frontend/ digunakan
Wails tidak peduli framework apa pun yang ada di frontend/. Wails hanya mengandalkan
kontrak kecil yang agnostik terhadap framework:
frontend/dist/adalah yang di-ship.main.gomeng-embed frontend yang sudah di-build dengan//go:embed all:frontend/distdan menyajikannya dari asset server. Build Anda harus menghasilkan bundle statis kefrontend/dist/(direktori output default Vite).- Build didorong oleh
frontend/package.json. Saatwails3 build, Wails menjalankan skripbuildfrontend; saatwails3 devia menjalankandevdan mem-proxy dev server Vite untuk hot reload. - Bindings di-generate ke
frontend/bindings/. Wails memeriksa layanan Go yang Anda daftarkan dan menulis SDK type-safe di sana. Anda mengimpornya seperti modul lainnya:
import { GreetService } from "./bindings/changeme";- Dev server berjalan di port tetap.
wails3 devmem-proxy Vite pada port diWAILS_VITE_PORT(default9245), jadi aturserver.portke port tersebut denganstrictPort: true. Ini adalah konfigurasi Vite biasa — tidak ada plugin Wails yang terlibat. - Opsional — custom event bertipe. Template bawaan juga mendaftarkan
plugin
@wailsio/runtime/plugins/vite. Plugin ini hanya diperlukan jika Anda menggunakan custom event bertipe: plugin ini menyuntikkan definisi tipe event yang di-generate ke runtime dan membuat build gagal sampai bindings sudah di-generate. Jika Anda hanya menggunakan API berbasis stringEvents.On("time", …), Anda bisa melewatkannya.
Semua yang lain — komponen, routing, state, styling — sepenuhnya terserah framework Anda.
Scaffold framework apa pun dengan Vite
Jalur tercepat adalah memulai dari template bawaan (sehingga Anda mendapat main.go,
Taskfile, build assets, dan layanan Go yang berfungsi), lalu mengganti frontend/ dengan proyek
Vite baru untuk framework Anda.
Buat proyek dari template default
wails3 init -n myapp
cd myapp
Ganti `frontend/` dengan aplikasi Vite untuk framework Anda
Vite dapat membuat scaffold sebagian besar framework dengan satu perintah. Pilih template:
# Dari root proyek — mis. Solid, Preact, Lit, Svelte, Vue, React, Vanilla
rm -rf frontend
npm create vite@latest frontend -- --template solid
Ganti solid dengan template Vite apa pun: preact, lit, svelte, vue, react,
vanilla, atau varian -ts-nya (solid-ts, preact-ts, …).
Instal runtime dan arahkan Vite ke dev server Wails
cd frontend
npm install @wailsio/runtime
@wailsio/runtime menyediakan API JS (Events, Browser, dialog, …). Satu-satunya
perubahan vite.config yang wajib adalah port dev server, agar wails3 dev dapat menemukannya:
import { defineConfig } from "vite";
export default defineConfig({
server: {
host: "127.0.0.1",
port: Number(process.env.WAILS_VITE_PORT) || 9245,
strictPort: true,
},
});Hanya jika Anda berniat menggunakan custom event bertipe, tambahkan juga plugin — plugin ini menyuntikkan tipe event yang di-generate dan mewajibkan bindings ada sebelum build:
import { defineConfig } from "vite";
import wails from "@wailsio/runtime/plugins/vite";
export default defineConfig({
plugins: [wails("./bindings")],
server: { host: "127.0.0.1", port: Number(process.env.WAILS_VITE_PORT) || 9245, strictPort: true },
});Panggil layanan Go Anda
Generate bindings sekali, lalu impor di mana saja dalam komponen Anda:
wails3 generate bindings
import { GreetService } from "./bindings/changeme";
const greeting = await GreetService.Greet("World");Jalankan
wails3 dev
Framework dengan scaffolder sendiri
Beberapa framework tidak dibuat melalui template create Vite dan memiliki
tooling sendiri. Framework tersebut tetap berfungsi — cukup buat scaffold dengan perintah native-nya
dan tambahkan plugin Wails setelahnya:
- SvelteKit:
npx sv create frontend. Gunakan static adapter (@sveltejs/adapter-static) agar build menghasilkan bundle statis, dan nonaktifkan SSR. - Qwik:
npm create qwik@latest. Gunakan adapter static (SSG). - Angular: scaffold dengan
ng new, aturoutputPathkedist, dan arahkan skrip build keng build.
Aturannya selalu sama: hasilkan build statis di frontend/dist/, pertahankan
plugin Vite @wailsio/runtime (atau impor runtime secara langsung), dan impor
bindings Go Anda dari frontend/bindings/.