こんにちは。よっしーです(^^)
今日は、SvelteKitでの移行について解説しています。
背景
SvelteKitでの移行について調査する機会がありましたので、その時の内容を備忘として記事に残しました。
SvelteKit 2.12:$app/storesは非推奨になりました
SvelteKit 2.12では、Svelte 5のルーンAPIに基づく$app/state
が導入されました。$app/state
は$app/stores
が提供するすべての機能を提供しますが、使用する場所と方法についてより柔軟性があります。最も重要なのは、page
オブジェクトが細分化されたことで、例えばpage.state
の更新はpage.data
を無効化せず、その逆も同様です。
結果として、$app/stores
は非推奨となり、SvelteKit 3で削除される予定です。まだの場合はSvelte 5にアップグレードし、$app/stores
から移行することを推奨します。ほとんどの置き換えはかなり簡単なはずです:$app/stores
のインポートを$app/state
に置き換え、使用箇所から$
プレフィックスを削除します。
<script>
import { page } from '$app/stores';
import { page } from '$app/state';
</script>
{$page.data}
{page.data}
.svelte
コンポーネント内の$app/stores
の使用のほとんどを自動的に移行するには、npx sv migrate app-state
を使用してください。
解説
この変更は、SvelteKitのステート管理に関する重要な更新について説明しています:
- 新機能
$app/state
の導入:
- Svelte 5のルーンAPIをベースに設計
- より柔軟な使用方法を提供
- パフォーマンスの改善
- 細分化された更新(fine-grained updates)
- 必要な部分のみが再レンダリング
- 主な改善点:
- pageオブジェクトの細分化
page.state
の更新はpage.data
に影響しない- より効率的な更新処理
- より柔軟な使用方法
- パフォーマンスの向上
- 移行方法:
- インポートの変更:
// 古い方法
import { page } from '$app/stores';
// 新しい方法
import { page } from '$app/state';
- 使用方法の変更:
$
プレフィックスの削除- 例:
$page.data
→page.data
- 自動移行ツール:
npx sv migrate app-state
コマンド- .svelteコンポーネントの自動更新
- 今後の予定:
$app/stores
は非推奨に- SvelteKit 3で完全に削除予定
- Svelte 5への移行を推奨
この変更により:
より効率的なステート管理
よりクリーンなコード
より良いパフォーマンス
が実現されます。
おわりに
今日は、 SvelteKitでの移行について解説しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント