因为 SvelteKit 使用基于目录的路由,所以可以很容易地将模块和组件放在使用它们的路由旁边。一个好的经验法则是”将代码放在靠近使用它的地方”。
有时,代码会在多个地方使用。当这种情况发生时,有一个可以存放它们的地方很有用,这样所有路由都可以访问它们,而不需要在导入时使用 ../../../../
这样的前缀。在 SvelteKit 中,这个地方就是 src/lib
目录。src
中的任何模块都可以通过 $lib
别名访问这个目录中的任何内容。
在这个练习中,两个 +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>
1
2
3
4
5
6
<script>
import { message } from '../lib/message.js';
</script>
<h1>home</h1>
<p>{message}</p>