フレームワークを整える
中級Svelte を整える。
= コンパイル時に「値が変わったら書き換える」コードが生まれる仕組みを体験する
サンプルコード(クリックでエディタに挿入)
「実行」を押すとここにプレビューが表示されます。
CONSOLE
※ 無限ループを書くとタブが固まることがあります。その場合は「■ 停止」でプレビューを作り直せます。
Svelte が向いている場面/向かない場面
自分に合うのはどれ? 選び方を見る →ビルド時にコンパイルしてランタイムを持たない、軽さ最優先の選択肢。
◎ 向いている場面
- ・配布サイズ・表示速度を最優先したいとき(ビルド時にコンパイルし、ランタイムの差分計算を持たない)
- ・書くコード量を減らしたいとき(ボイラープレートが少ない)
- ・SvelteKitでSEOも狙うWebサイトを作りたいとき
- ・個人開発・小〜中規模アプリ
△ 向かない場面
- ・求人量・日本語情報の多さを最優先するとき(当サイト内では手薄)
- ・大規模チームでの採用実績・ライブラリの選択肢の広さを重視するとき
Svelte は「コンパイル時」に描画コードを作ってしまう。
多くのフレームワークはブラウザ内で差分計算(仮想DOM)をしますが、Svelte はビルド時に「この値が変わったらここを書き換える」という命令そのものを生成します。だから実行時の余計な計算が少なく済みます。
- ①
$state() — 値をリアクティブにする
let count = $state(0)は、普通の変数のようにcount++と書くだけで更新でき、使っている場所が自動で再描画されます。 - ②
onclick / bind:value — イベントと双方向バインド
onclick={handler}でクリックを受け取り、bind:valueで入力欄と変数を双方向に結びます。 - ③
{#each} — 配列を並べて描画する
配列に要素を追加・削除すると、一覧の表示も自動で追従します。テンプレートの構文自体が JavaScript の一部として拡張されている点が Vue との違いです。
- ④
$derived() — 依存する値から自動で再計算
let total = $derived(price * qty)は、price か qty のどちらかが変わるたびに自動で再計算されます。
このページについて
ライブラリは cdn.jsdelivr.net から読み込みます。書いたコードと実行結果は端末内で完結し、外部へ送信しません(送信ゼロ)。
プレビューはサンドボックス化した iframe(sandbox="allow-scripts")で動いており、このページや端末のデータには触れません。
🌐 このページを開いただけでは外部通信は発生しませんが、「実行」を押した最初の1回だけ、
Svelte のコンパイラとランタイム(svelte 5.57.0)を配信元の
cdn.jsdelivr.net から取得します。
これはプログラムを受け取るだけの通信で、あなたが書いたコードや実行結果が送られることはありません。
ただし通信である以上、配信元にはお使いの回線の IP アドレスが見えます。
「入力は端末から出さない」という当サイトの原則に関わる点なので、隠さずに書いておきます。
このツールについて
Svelte のコンポーネントを、ブラウザの中だけでコンパイルして動かします。$state で値を変えると画面が追従し、{#each} で並べた一覧が増え、$derived が自動で再計算される様子を、実際に手を動かして確認できます。
ブラウザ内で Svelte 5 のコンポーネントをコンパイルして実行する Playground。$state・イベント・{#each}・$derived の4本で、コンパイルが生む「値が変わったら書き換える」コードの仕組みを体験できます。
主な機能
- 4サンプル($state・イベント・{#each}・$derived)
- Svelte コンパイラで事前コンパイルしてから実行(CSP の new Function 禁止に対応)
- importmap で svelte/internal/client 等を解決するサンドボックス iframe
- 左エディタ・右プレビュー+console・停止ボタン
- svelte はcdn.jsdelivr.net から初回のみ・送信ゼロ
よくある質問
Q. 入力した Svelte のコードはサーバーに送られますか?
A. 送られません。コンパイルも実行もブラウザ内で完結します。外へ出る通信はコンパイラとランタイムのダウンロード(初回のみ)だけです。
Q. 他のフレームワークとの違いは何ですか?
A. 多くのフレームワークは実行時に差分計算(仮想 DOM)をしますが、Svelte はコンパイル時に「この値が変わったらここを書き換える」という命令そのものを生成します。
Q. 無限ループを書いたらどうなりますか?
A. プレビューのタブが固まることがあります。「■ 停止」でプレビューの iframe を作り直せます。
入力値はURLの「#」以降に入るためサーバーには送信されません。リンクを開くと同じ状態を復元します。