このサイトは、ページ全体をSPAとして実装していません。
本文やナビゲーションの大部分はビルド時にHTMLへ変換し、テーマ切り替えなど、状態を必要とする部分だけReactで動かしています。
Why
コンテンツ中心のサイトでは、クライアントJavaScriptを増やすこと自体は目的ではありません。
- 初期表示で必要なHTMLを最初から返す
- JavaScriptが無効でも本文を読める
- インタラクションが必要な箇所だけhydrateする
- テスト対象となるクライアント状態を小さく保つ
この制約を設計として明示するため、AstroのIsland Architectureを採用しています。