SvelteKit
ディレクトリ構成
src/lib
- 共通のライブラリコードを配置するディレクトリで、ここに置いたモジュールは $lib
経由で import
可能
src/lib/server
- サーバでのみ利用したいコードを置くディレクトリで、 $lib/server
経由で import
可能
src/params
- Routing向けのMatcherを配置するディレクトリ
src/routes
- Routing用にページコンポーネントなどを配置するディレクトリ
src/app.html
- テンプレート用のHTMLファイル
src/error.html
- エラー用のテンプレートHTMLファイル
src/hooks.js
- フック
src/service-worker.js
- サービスワーカー
static/
- 静的なアセットを配置するディレクトリ
.svelte-kit/
-
SvelteKitが生成したファイルが配置されるディレクトリ
Routing
src/routes
配下の構造を元に動作します
/help
にアクセスした際は、 src/routes/help/+page.svelte
がレンダリングされます
+page.svelte
のレンダリング前に追加でデータの読み込みを行いたい際は、同一ディレクトリに +page.js
を用意し、 load()
を export
します
注意点として、
+page.js
は
SSR時だけでなくCSR時も実行されます
もし
SSR時のみ実行して欲しい場合は、
+page.js
ではなく
+page.server.js
を用意します
そのため、環境変数の参照やDBへのアクセスなどが必要な際は、 +page.js
の代わりに +page.server.js
を用意する必要があります
動的なRouteを定義したいときは、 src/routes/books/[id]
のようなディレクトリを用意します
+server.js
で GET
や POST
などの関数を export
しておくと、定義したエンドポイントにアクセスされた際に該当する関数が呼ばれます
Formアクション
+page.server.js
で actions
を export
することで、対応するページの <form>
から送信された POST
リクエストを処理できます
デフォルトでは actions.default
で定義した関数が呼ばれます (default action)
actions.default
以外の関数を呼びたい際は、 <form>
の action
属性に /<対象の関数名>
の形式でクエリパラメータを付与する必要があります (named action)
例) actions.create
を呼びたい場合は、 <form method="POST" action="?/create">
のように指定します
default actionとnamed actionは併用不可です
エラーハンドリング
load()
の実行中にエラーが発生すると、対象の +page(.server).js
から最も近くにある +error.svelte
がレンダリングされます
error()
で作成したエラーを throw
することで、指定されたステータスコードのレスポンスを返却できます
fail()
を使うと、指定したステータスコードとともにデータを返却できます (返却されたデータはページコンポーネントからは form
経由で参照可能)
上記以外の方法でエラーが発生した際は、 handleError
フックが実行されます
その他