Menggunakan Framework Frontend Lain
Cara menggunakan framework yang tidak memiliki templat bawaan dengan menempatkan proyek Vite Anda sendiri ke dalam direktori frontend
Wails menyediakan templat awal bawaan untuk sejumlah kecil framework yang dipilih secara sengaja:
| Templat | Bahasa |
|---|---|
vanilla |
TypeScript (bawaan) |
vanilla-js |
JavaScript |
react |
TypeScript |
react-js |
JavaScript |
vue |
TypeScript |
svelte |
TypeScript |
Namun, pilihan Anda tidak terbatas pada framework tersebut. Frontend aplikasi Wails hanyalah proyek web — apa pun yang dapat dibangun menjadi HTML/CSS/JS statis bisa digunakan. Jika framework pilihan Anda (Solid, Preact, Lit, Qwik, SvelteKit, Angular, …) tidak memiliki templat, Anda dapat melakukan scaffolding sendiri dalam beberapa menit.
Cara direktori frontend/ digunakan
Wails tidak mempermasalahkan framework apa yang berada di frontend/. Wails hanya mengandalkan kontrak kecil yang tidak bergantung pada framework:
-
frontend/dist/adalah artefak yang didistribusikan.main.gomenyematkan frontend yang telah dibangun dengan//go:embed all:frontend/distdan menyajikannya dari server aset. Proses build Anda harus menghasilkan bundel statis difrontend/dist/(direktori keluaran bawaan Vite). -
Build dikendalikan oleh
frontend/package.json. Selamawails3 build, Wails menjalankan skripbuildmilik frontend; selamawails3 dev, Wails menjalankandevdan memproksikan server pengembangan Vite untuk hot reload. -
Binding dibuat di
frontend/bindings/. Wails memeriksa layanan Go yang Anda daftarkan dan menulis SDK yang aman secara tipe di sana. Anda dapat mengimpornya seperti modul lain:jsimport { GreetService } from "./bindings/changeme"; -
Server pengembangan berjalan pada port tetap.
wails3 devmemproksikan Vite pada port yang tercantum diWAILS_VITE_PORT(bawaan:9245), jadi tetapkanserver.portke port tersebut denganstrictPort: true. Ini adalah konfigurasi Vite biasa — tidak melibatkan plugin Wails. -
Opsional — peristiwa khusus bertipe. Templat bawaan juga mendaftarkan plugin
@wailsio/runtime/plugins/vite. Plugin ini hanya diperlukan jika Anda menggunakan peristiwa khusus bertipe: plugin tersebut menyuntikkan definisi tipe peristiwa yang dihasilkan ke dalam runtime dan membuat build gagal hingga binding dibuat. Jika Anda hanya menggunakan APIEvents.On("time", …)berbasis string, plugin ini dapat dihilangkan.
Selebihnya — komponen, perutean, state, dan gaya — sepenuhnya bergantung pada framework Anda.
Lakukan scaffolding framework apa pun dengan Vite
Cara tercepat adalah memulai dari templat bawaan (agar Anda mendapatkan main.go, Taskfile, aset build, dan layanan Go yang berfungsi), lalu mengganti frontend/ dengan proyek Vite baru untuk framework Anda.
Buat proyek dari templat bawaan
wails3 init -n myapp
cd myapp
Ganti `frontend/` dengan aplikasi Vite untuk framework Anda
Vite dapat melakukan scaffolding untuk sebagian besar framework dengan satu perintah. Pilih templat:
# From the project root — e.g. Solid, Preact, Lit, Svelte, Vue, React, Vanilla
rm -rf frontend
npm create vite@latest frontend -- --template solid
Ganti solid dengan templat Vite apa pun: preact, lit, svelte, vue, react, vanilla, atau varian -ts masing-masing (solid-ts, preact-ts, …).
Instal runtime dan arahkan Vite ke server pengembangan Wails
cd frontend
npm install @wailsio/runtime
@wailsio/runtime menyediakan API JS (Events, Browser, dialog, …). Satu-satunya perubahan vite.config yang wajib adalah port server pengembangan, 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 bermaksud menggunakan peristiwa khusus bertipe, tambahkan juga plugin tersebut — plugin ini menyuntikkan tipe peristiwa yang dihasilkan dan mengharuskan binding sudah tersedia 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
Buat binding satu kali, lalu impor binding tersebut di mana pun dalam komponen Anda:
wails3 generate bindings
import { GreetService } from "./bindings/changeme";
const greeting = await GreetService.Greet("World");Jalankan
wails3 dev
Framework dengan alat scaffolding sendiri
Beberapa framework tidak dibuat melalui templat create Vite dan memiliki alatnya sendiri. Framework tersebut tetap dapat digunakan — cukup lakukan scaffolding dengan perintah bawaannya, lalu tambahkan plugin Wails setelahnya:
- SvelteKit:
npx sv create frontend. Gunakan adaptor statis (@sveltejs/adapter-static) agar menghasilkan bundel statis, dan nonaktifkan SSR. - Qwik:
npm create qwik@latest. Gunakan adaptor statis (SSG). - Angular: lakukan scaffolding dengan
ng new, tetapkanoutputPathkedist, lalu 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 binding Go Anda dari frontend/bindings/.