Skip to main content
Basic Svelte
Introduction
Reactivity
Props
Logic
Events
Bindings
Classes and styles
Actions
Transitions
Advanced Svelte
Advanced reactivity
Reusing content
Motion
Advanced bindings
Advanced transitions
Context API
Special elements
<script module>
Next steps
Basic SvelteKit
Introduction
Routing
Loading data
Headers and cookies
Shared modules
Forms
API routes
$app/state
Errors and redirects
Advanced SvelteKit
Hooks
Page options
Link options
Advanced routing
Advanced loading
Environment variables
Conclusion

SvelteKit はディレクトリベースのルーティングを使用しているので、モジュールやコンポーネントとそれを使用するルート(route)を一緒に配置するのがとても簡単です。経験則では、’コードは使う場所のすぐ近くに置く (put code close to where it’s used)’ です。

コードが複数の場所で使われることもよくあります。そのときに、インポートのプレフィックスに ../../../../ をつけなくても全てのルート(route)からアクセスできる置き場所があると便利です。SvelteKit では、src/lib ディレクトリがその場所です。このディレクトリに配置されているものは、$lib エイリアスを介して src にあるどのモジュールからもアクセスすることができます。

この演習にある両方の +page.svelte ファイルは src/lib/message.js をインポートしています。しかし /a/deeply/nested/route に移動すると、アプリが壊れます。なぜなら、プレフィックスが間違っているからです。代わりに、 $lib/message.js を使用するように更新しましょう:

src/routes/a/deeply/nested/route/+page
<script>
	import { message } from '$lib/message.js';
</script>

<h1>a deeply nested route</h1>
<p>{message}</p>
<script lang="ts">
	import { message } from '$lib/message.js';
</script>

<h1>a deeply nested route</h1>
<p>{message}</p>

src/routes/+page.svelte も同じようにしましょう:

src/routes/+page
<script>
	import { message } from '$lib/message.js';
</script>

<h1>home</h1>
<p>{message}</p>
<script lang="ts">
	import { message } from '$lib/message.js';
</script>

<h1>home</h1>
<p>{message}</p>

Edit this page on GitHub

1
2
3
4
5
6
<script>
	import { message } from '../lib/message.js';
</script>
 
<h1>home</h1>
<p>{message}</p>