コンポーネント
基本コンポーネント

Hello {name}!

コンポーネント構造
<script>コンポーネントロジック(JS/TS)
Markup{expressions} を含む HTML テンプレート
<style>スコープ付き CSS(コンポーネントに自動スコープ)
<script context="module">インスタンスごとではなく、モジュールごとに一度実行
リアクティビティ
リアクティブな代入
リアクティブ宣言

$: はリアクティブ宣言と文をマークします

リアクティビティのルール
Assignment triggerscount += 1 で更新がトリガーされます。obj.x = 1 も同様
Array mutationarr = [...arr, item] を使う(再代入でトリガー)
$: declaration参照する変数が変わると自動再計算
$: statementリアクティブに副作用を実行
プロップ
プロップの宣言と渡し方

{greeting}, {name}!

プロップのスプレッド
イベント
DOM イベント
value = e.target.value} />
イベント修飾子
preventDefaulte.preventDefault() を呼び出す
stopPropagationイベントのバブリングを停止
onceハンドラーが一度だけ発火
selfevent.target が要素自身のときのみ
captureキャプチャフェーズを使用
コンポーネントイベント
バインディング
双方向バインディング
要素とコンポーネントのバインディング
バインディングの種類
bind:valueinput/select/textarea の値
bind:checkedチェックボックスの状態
bind:groupラジオ/チェックボックスグループ
bind:thisDOM 要素の参照
bind:clientWidth/Height読み取り専用の要素サイズ
ストア
書き込み可能ストア
// store.js import { writable } from "svelte/store"; export const count = writable(0); // Component — auto-subscribe with $
ストアのメソッド
count.set(10); // set value count.update(n => n + 1); // update from current const unsub = count.subscribe(v => console.log(v));
ストアの種類
writable(val)読み書き可能ストア
readable(val, fn)読み取り専用、開始関数でセット
derived(stores, fn)他のストアから計算
$storeコンポーネント内の自動サブスクライブ構文
トランジション
組み込みトランジション
{#if visible}
Fades in/out
Fly in, fade out
{/if}
トランジションオプション
fade不透明度 0 から 1
flyx/y オフセットと不透明度をアニメーション
slideスライドイン/アウト(高さ)
scaleスケールとフェード
drawSVG パスのストロークアニメーション
durationトランジション時間(ms)
delay開始前の遅延
スロット
デフォルトスロットと名前付きスロット
Default header Default content

Title

Body content goes here

スロットプロップ
{#each items as item} {/each}

{index}: {item.name}

コンテキスト
コンテキストのセットと取得
コンテキストとストアの比較
Contextコンポーネントツリースコープ、デフォルトでリアクティブでない
Storesグローバル、リアクティブ、どこでもインポート可能
Context + Storeコンテキスト経由でストアを渡しスコープ付きリアクティビティを実現
SvelteKit の基本
ファイルベースルーティング
src/routes/ +page.svelte about/+page.svelte blog/[slug]/+page.svelte
ロード関数
// +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() }; }
主要ファイル
+page.svelteページコンポーネント
+page.js / +page.tsクライアント/ユニバーサルロード関数
+page.server.jsサーバー専用ロード/フォームアクション
+layout.svelte共有レイアウトラッパー
+error.svelteエラーページ
+server.jsAPI エンドポイント(GET、POST など)