アプリのさまざまなルートは、多くの場合、共通のUIを共有します。各+page.svelte
コンポーネントでそれを繰り返す代わりに、同じディレクトリのすべてのルートに適用される+layout.svelte
コンポーネントを使用できます。
このアプリには、同じナビゲーションUIを含む2つのルート、src/routes/+page.svelte
とsrc/routes/about/+page.svelte
があります。新しいファイルsrc/routes/+layout.svelte
を作成しましょう...
src/routes/
├ about/
│ └ +page.svelte
├ +layout.svelte
└ +page.svelte
…そして、+page.svelte
ファイルから重複したコンテンツを新しい+layout.svelte
ファイルに移動します。{@render children()}
タグは、ページコンテンツがレンダリングされる場所です。
src/routes/+layout
<script>
let { children } = $props();
</script>
<nav>
<a href="/">home</a>
<a href="/about">about</a>
</nav>
{@render children()}
+layout.svelte
ファイルは、兄弟の+page.svelte
(存在する場合)を含むすべての子ルートに適用されます。レイアウトは任意の深さにネストできます。
1
2
3
4
5
6
7
8
<nav>
<a href="/">home</a>
<a href="/about">about</a>
</nav>
<h1>home</h1>
<p>this is the home page.</p>