Komponen
Komponen Dasar

Hello {name}!

Struktur Komponen
<script>Logika komponen (JS/TS)
MarkupTemplate HTML dengan {expressions}
<style>CSS yang di-scope (otomatis per komponen)
<script context="module">Dijalankan sekali per modul, bukan per instance
Reaktivitas
Penugasan Reaktif
Deklarasi Reaktif

$: menandai deklarasi dan pernyataan reaktif

Aturan Reaktivitas
Assignment triggerscount += 1 memicu update; obj.x = 1 juga
Array mutationGunakan arr = [...arr, item] (reassign untuk memicu)
$: declarationDihitung ulang otomatis ketika variabel yang dirujuk berubah
$: statementMenjalankan efek samping secara reaktif
Props
Deklarasi & Pemberian Props

{greeting}, {name}!

Spread Props
Event
Event DOM
value = e.target.value} />
Modifier Event
preventDefaultMemanggil e.preventDefault()
stopPropagationMenghentikan event bubbling
onceHandler hanya dipanggil sekali
selfHanya jika event.target adalah elemen itu sendiri
captureGunakan fase capture
Event Komponen
Binding
Two-Way Binding
Binding Elemen & Komponen
Jenis Binding
bind:valueNilai input/select/textarea
bind:checkedStatus checkbox
bind:groupGrup radio/checkbox
bind:thisReferensi elemen DOM
bind:clientWidth/HeightDimensi elemen (hanya baca)
Store
Writable Store
// store.js import { writable } from "svelte/store"; export const count = writable(0); // Component — auto-subscribe with $
Metode Store
count.set(10); // set value count.update(n => n + 1); // update from current const unsub = count.subscribe(v => console.log(v));
Jenis Store
writable(val)Store baca-tulis
readable(val, fn)Hanya baca, diset oleh fungsi start
derived(stores, fn)Dihitung dari store lain
$storeSintaks auto-subscribe dalam komponen
Transisi
Transisi Bawaan
{#if visible}
Fades in/out
Fly in, fade out
{/if}
Opsi Transisi
fadeOpacity 0 ke 1
flyAnimasi offset x/y + opacity
slideMasuk/keluar dengan geser (tinggi)
scaleSkala dan fade
drawAnimasi stroke SVG path
durationDurasi transisi dalam ms
delayTunda sebelum dimulai
Slot
Slot Default & Bernama
Default header Default content

Title

Body content goes here

Slot Props
{#each items as item} {/each}

{index}: {item.name}

Context
Set & Get Context
Context vs Store
ContextDi-scope ke pohon komponen, tidak reaktif secara default
StoresGlobal, reaktif, bisa diimpor dari mana saja
Context + StoreTeruskan store via context untuk reaktivitas yang di-scope
Dasar SvelteKit
Routing Berbasis File
src/routes/ +page.svelte about/+page.svelte blog/[slug]/+page.svelte
Fungsi Load
// +page.js (runs on client & server) export async function load({ params, fetch }) { const res = await fetch(`/api/posts/${params.slug}`); return { post: await res.json() }; }
File Penting
+page.svelteKomponen halaman
+page.js / +page.tsFungsi load client/universal
+page.server.jsLoad khusus server / form actions
+layout.sveltePembungkus layout bersama
+error.svelteHalaman error
+server.jsAPI endpoint (GET, POST, ...)