リリース・改善中
Framework · 2020年公開
SvelteKit は Svelte で Web アプリを作るための公式フレームワークで、ファイルベースのルーティング、サーバーレンダリング、データ読み込み、柔軟なデプロイを備えています。
SvelteKit は Svelte チームが開発する公式のアプリケーションフレームワークで、2020 年に初めて公開され、オープンソースで開発されています。コンポーネントをビルド時に効率的な JavaScript へコンパイルする Svelte の上に、ルーティング、サーバーサイドレンダリング(SSR)、データ読み込み、フォーム処理、ビルドとデプロイを加え、開発サーバーとバンドルは Vite が担います。現在の世代の Svelte は、$state、$derived、$effect、$props といったルーン(rune)でリアクティビティを表現します。
SvelteKit の強みは、ページごとにレンダリング方式を選べることです。ブログ記事やドキュメントのように誰にとっても同じ内容はビルド時にプリレンダリングし、ユーザーごとの画面はサーバーでレンダリングし、ブラウザー API に強く依存する画面はクライアントだけで描画できます。フォームアクションは JavaScript がなくても動作し、段階的に強化されます。アダプターを切り替えれば、同じコードを Node.js サーバー、静的ホスティング、Vercel・Netlify・Cloudflare などのプラットフォームにデプロイできます。
はじめるには、npx sv create でプロジェクトを作成し、svelte.dev の対話型チュートリアルで Svelte の基礎から SvelteKit へと順に進めるのがおすすめです。古い資料には export let、$lib、svelte.config.js など現在とは異なる構文や設定が載っていることが多いため、公式ドキュメントと現在のルーン構文を基準に学びましょう。
$state、$derived、$effect、$props でリアクティビティを明示し、コンパイラーが仮想 DOM なしで変更箇所だけを更新するコードを生成します。
src/routes のフォルダー構成がそのまま URL になり、+page、+layout、+server、+error ファイルでページ、共通レイアウト、API、エラー画面を定義します。
サーバーレンダリング、クライアントレンダリング、プリレンダリングを、prerender、ssr、csr オプションでページごとに選べます。
型が自動で付く load 関数でデータを読み込み、JavaScript なしでも動くフォームアクションでデータを更新します。
SvelteKit の開発は Node.js 上で行います。現在の LTS 版をインストールし、新しいターミナルで node と npm のバージョンが表示されることを確認します。
node --version && npm --version公式のコマンドラインツール sv で新しいプロジェクトを作成します。テンプレート、TypeScript の利用、Prettier・ESLint・Vitest・Playwright などのアドオンを選べます。
npx sv create my-appプロジェクトのフォルダーに移動して依存関係をインストールし、開発サーバーを起動します。ブラウザーで http://localhost:5173 が開き、保存するとすぐに反映されます。
cd my-app && npm install && npm run dev -- --opensrc/routes/+page.svelte はサイトのトップページ(/)です。$state ルーンで作った count は値が変わるたびに画面を自動で更新し、onclick 属性に渡した関数がクリックのたびに値を 1 ずつ増やします。新しいページは src/routes/about/+page.svelte のようにフォルダーを作って追加します。
src/routes/+page.svelte
<script lang="ts">
let count = $state(0);
</script>
<h1>Hello, SvelteKit!</h1>
<button onclick={() => count++}>
Clicked {count} times
</button>
npx sv create my-app && cd my-app && npm install && npm run devインストールから SvelteKit の中心となる考え方まで、6 章で順を追って学びます。
SvelteKit について質問し、経験を共有し、意見を交わす場所です。
まだディスカッションはありません。最初の話題を始めましょう。
コメント 0件
ログイン · ログインするとコメントできます。
最初のコメントを書いてみましょう。