Open4

SvelteKit で SPA を動かす

aonoaono

root layout で SSR を無効にすればルーティングごとのリクエストは無くなり SPA として動作するが、オススメしない。。

export const ssr = false;

サーバーサイドロジックが無い場合は、adapter-static を使って全体を静的なファイルにして SPA として動作させる。

https://svelte.jp/docs/kit/single-page-apps

aonoaono

デプロイの流れ

  1. ビルド設定
    • adapter の fallback オプションに index.html を指定
    • root layout で prerender = false を指定
  2. ビルド
  3. build フォルダの中に index.html が生成
  4. build フォルダの中身を GCS や S3 にアップロード

https://svelte.jp/docs/kit/adapter-static

SPA だとクライアント側でページの内容は書き換わるのでプレレンダリングは不要
→ root layout で prerender = false を指定

aonoaono

GCS に SPA を配置して動かすには、ロードバランサとの連携が必要。
バケット内の単独ファイルにブラウザからアクセスはできるが、html から js を読み込む際にエラーが発生する。

https://cloud.google.com/storage/docs/hosting-static-website?hl=ja

GCS の場合、メインページに index.html を設定しておけばルートへのアクセスでトップページを表示できる。

https://cloud.google.com/storage/docs/hosting-static-website?hl=ja#specialty-pages