実践的なガイド - Next.js App Router への移行

Mary-Kate Olsen
リリース: 2024-09-30 22:26:02
オリジナル
1069 人が閲覧しました

A practical Guide - Migrating to Next.js App Router

Next.js App Router のリリースに伴い、多くの開発者が既存のプロジェクトの移行を熱望しています。この投稿では、主な課題、変更点、プロセスをよりスムーズにする方法など、プロジェクトを Next.js App Router に移行した私の経験を共有します。

これは段階的なアプローチであり、ページ ルーターとアプリ ルーターを同時に使用できます。

Next.js App Router に移行する理由

App Router にはいくつかの利点があります:

  • ルーティングの改善: よりクリーンなファイルシステムベースのルーティング。
  • サーバー側レンダリング (SSR) の機能強化: サーバー側データの処理がより効率的になりました。
  • メタ処理: SEO 管理の簡素化。
  • パフォーマンスの向上: さまざまなコンポーネントの最適化が組み込まれています。

移行することで、アプリケーションを将来にわたって保証し、最新の Next.js 機能を活用できます。

App Router に移行する手順

  • 依存関係を更新

最初のステップは、Next.js と関連する依存関係が最新であることを確認することです。次のコマンドを実行して、Next.js と React の最新バージョンをインストールします。

npm install next@latest react@latest react-dom@latest
npm install -D eslint-config-next@latest
ログイン後にコピー
  • アプリフォルダーを構造化する

App Router は、ルート、メタデータ、レイアウトを管理するために新しいアプリ ディレクトリに依存します。構造化する方法は次のとおりです:

アプリ フォルダー: ページをアプリ フォルダーに移動します。各ルートには、page.tsx ファイルを含む独自の専用フォルダーが存在します。

レイアウト: アプリの特定のセクションのレイアウトを定義するには、layout.tsx ファイルを追加します。これは、ナビゲーション バーやフッターなどの共有コンポーネントを処理する場合に特に便利です。

  • ルーターの変更

最も重要な変更の 1 つは、ルーティングおよびナビゲーション機能の next/router が next/navigation に置き換えられたことです。

すべての next/router import を next/navigation に置き換えます。
useRouter などの関数を、必要に応じて usePathname、useSearchParams、useRouter() などの新しい同等の関数で更新します。

  • サーバー側のコードをリファクタリング

getServerSideProps と getStaticProps は App Router では非推奨になりました。
サーバー側ページでのデータ取得には、非同期サーバー コンポーネントまたはサーバー アクションを使用します。

export async function getData() {
  const res = await fetch('https://getData.com/data');
  return res.json();
}
ログイン後にコピー
  • クライアント側コンポーネントの処理

クライアントコンポーネント:
React フック、ブラウザ API、またはユーザー インタラクションを使用するコンポーネントはすべて、「クライアントを使用」とマークする必要があります。これにより、Next.js にクライアント側でレンダリングするよう指示されます。

サーバーコンポーネント:
ブラウザとの対話を必要としないコンポーネントは、サーバー コンポーネントとして残すことができます。これらは、不要な JavaScript をクライアントに送信することを避けるため、より効率的です。

  • 外部ライブラリの処理

React Query、AntDesign、フレーマーなどの外部ライブラリを使用している場合は、それらを更新し、必要に応じて変更を加える必要があります。すべての変更をこのブログに記載することはできません。ただし、変更点はドキュメントに記載されています。

移行中の一般的な課題

  • ルーターイベント処理:

next/router から next/navigation への変更に伴い、ルーター イベントの処理には異なるアプローチが必要になる可能性があります。
ルーターのイベント リスナーまたはフックを適宜更新してください。

  • レイアウトの変更の問題:

複雑なレイアウト (特にアニメーションのあるページ) を含むページを移行すると、レイアウトの変化に気づくことがあります。プレースホルダーを追加するか、サーバー側自体で適切な配置を維持して、レイアウトのずれを防ぎます。

  • 画像とリンクコンポーネントの更新:

App Router により、画像コンポーネントとリンク コンポーネントに変更が加えられます。
codemod を使用してコンポーネントを自動的に更新します。
画像コンポーネントの場合、応答性などの非推奨の属性を削除します。

  • アニメーション

フレーマー、スワイパー、Lootie ファイルなどのアニメーション関連のコンポーネントはクライアント側に保持する必要があります。

結論

Next.js App Router への移行には課題もありますが、パフォーマンス、スケーラビリティ、柔軟性が大幅に向上します。移行を管理可能なセクション (アプリレベル、ページレベル、機能更新) に分割することで、各変更に体系的に取り組むことができました。

ご自身の移行に関するご質問やヒントがございましたら、お知らせください。

以上が実践的なガイド - Next.js App Router への移行の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!