Lewati ke konten

Perbedaan dengan SvelteKit

Bosia mengikuti konvensi SvelteKit secara erat, namun terdapat beberapa perbedaan penting.

Hal-hal berikut bekerja dengan cara yang sama seperti yang Anda harapkan:

  • Konvensi file+page.svelte, +layout.svelte, +page.server.ts, +layout.server.ts, +server.ts, +error.svelte
  • Route groups — direktori (name) yang tidak terlihat dalam URL
  • Dynamic routes — segmen [param] dan [...rest]
  • Fungsi load() — signature yang sama dengan params, url, locals, cookies, parent()
  • Tipe Handle({ event, resolve }) => Response
  • sequence() — menyusun handler middleware
  • Form actions — ekspor actions dengan fail() dan redirect()
  • Cookie APIget(), getAll(), set(), delete()
  • Alias $lib — memetakan ke src/lib/
  • Perlindungan CSRF — pemeriksaan berbasis origin pada metode non-safe
FiturSvelteKitBosia
RuntimeNode.jsBun
BundlerViteBun.build
Server HTTPDapat dikonfigurasi via adaptersElysiaJS (bawaan)
AdaptersDiperlukan (node, vercel, dll.)Tidak ada — satu server Bun
Universal load+page.ts / +layout.tsTidak didukung — hanya server loaders
Stores$app/storesTidak tersedia — gunakan $props()
Navigation$app/navigationRouter klien bawaan
Env vars$env/static/public, dll.$env dengan prefix empat tingkat
HMRVite HMR (granular)SSE full-page reload
Direktori generate.svelte-kit/.bosia/
Registry komponenTidak adabosia add (gaya shadcn)
Scaffolding fiturTidak adabosia feat
MetadataVia <svelte:head>Fungsi metadata() di +page.server.ts

Tidak ada universal load functions — Bosia hanya mendukung load() sisi server di +page.server.ts dan +layout.server.ts. Tidak ada +page.ts atau +layout.ts untuk loading sisi klien atau universal.

Tidak ada $app/stores — Sebagai gantinya, akses data melalui Svelte 5 runes:

<!-- SvelteKit -->
<script>
import { page } from "$app/stores";
</script>
<!-- Bosia -->
<script>
let { data } = $props();
</script>

Fungsi metadata() — Unik untuk Bosia. Mengembalikan title, description, dan tag meta. Dapat meneruskan data ke load() untuk menghindari duplikasi query database.

$env — Sebagai pengganti empat modul $env/* terpisah milik SvelteKit, Bosia menggunakan satu modul $env dengan sistem berbasis prefix:

// SvelteKit
import { PUBLIC_KEY } from "$env/static/public";
import { SECRET } from "$env/static/private";
// Bosia
import { PUBLIC_STATIC_KEY, SECRET } from "$env";

Fitur-fitur SvelteKit berikut tidak tersedia di Bosia:

  • +page.ts / +layout.ts (universal load functions)
  • $app/stores (page, navigating, updated)
  • $app/navigation (goto, beforeNavigate, afterNavigate)
  • depends() / invalidate() / invalidateAll()
  • Optimisasi gambar (@sveltejs/enhanced-img)
  • Service workers
  • Snapshots
  • Shallow routing
  • i18n
  • Sistem adapter / sistem plugin
  • <svelte:head> untuk metadata (gunakan metadata() sebagai gantinya)