ホームページ > ウェブフロントエンド > jsチュートリアル > Next.js 面接の習得: 重要な質問 (パート 6)

Next.js 面接の習得: 重要な質問 (パート 6)

Patricia Arquette
リリース: 2024-11-17 17:00:02
オリジナル
179 人が閲覧しました
Next.js Interview Mastery: Essential Questions (Part 6)

Next.js 面接ガイド: 成功するための 100 の質問と回答 (無料)

Next.js インタビュー ガイド: 成功するための 100 の質問と回答 ? を使用して、Next.js をマスターする際の可能性を最大限に引き出します。開発者として始めたばかりの場合でも、スキルを次のレベルに引き上げたいと考えている経験豊富なプロフェッショナルでも、この包括的な電子書籍は、Next.js の面接に合格し、自信を持って就職できる人材になるのに役立つように設計されています。開発者。このガイドでは Next.js の幅広いトピックをカバーしており、起こり得るあらゆる質問に十分に備えることができます。この電子書籍では、サーバーサイド レンダリング (SSR)、静的サイト生成 (SSG) などの重要な概念について説明します。 ) ?、増分静的再生成 (ISR) ⏳、App Router ?️、データ フェッチ ? など。各トピックは徹底的に説明されており、実際の例と、面接で最もよく聞かれる質問に対する詳細な回答が提供されています。このガイドでは、質問に答えるだけでなく、Next.js アプリケーションの最適化、パフォーマンスの向上 ⚡、スケーラビリティの確保のためのベスト プラクティス ✅ も強調しています。 Next.js は継続的に進化するため、React 18、同時レンダリング、Suspense などの最先端の機能も深く掘り下げています。これにより、常に最新の進歩を知ることができ、面接官が求めている知識を得ることができます。このガイドの特徴は、その実践的なアプローチです。理論を説明するだけでなく、プロジェクトに直接適用できる実用的な洞察も提供します。セキュリティ ?、SEO の最適化 ?、展開の実践 ?️ についても詳細に検討され、開発ライフサイクル全体に向けた準備が整っていることを確認します。トップ テクノロジー企業での技術面接の準備をしている場合でも、より効率的な構築を求めている場合でも、スケーラブルなアプリケーションを使用する場合、このガイドは Next.js スキルを磨き、競合他社に差をつけるのに役立ちます。この本を読み終える頃には、基本的な概念から専門家レベルの課題まで、Next.js の面接の質問に自信を持って取り組むことができるようになります。Next.js 開発者として優れた知識を身につけてください。そして自信を持って次のキャリアのチャンスに踏み出しましょう!

Next.js 面接の習得: 重要な質問 (パート 6) cyroscript.gumroad.com

51. Next.js で GraphQL を使用するにはどうすればよいですか?

GraphQL を Next.js で使用して、ヘッドレス CMS または任意の GraphQL エンドポイントからコンテンツをクエリできます。 Next.js を使用すると、静的生成 (getStaticProps を使用)、サーバー側のレンダリング (getServerSideProps を使用)、またはクライアント側 (Apollo Client や URQL などのフックを使用) 中に GraphQL からデータをフェッチできます。

  1. getStaticProps または getServerSideProps で GraphQL を使用する: graphql-request や Apollo Client などのライブラリを使用して、GraphQL データを取得し、それを props としてページに挿入できます。

graphql-request の例:

import { request } from 'graphql-request';

export async function getStaticProps() {
  const query = `{
    posts {
      id
      title
      content
    }
  }`;

  const data = await request('<https:>', query);

  return {
    props: {
      posts: data.posts,
    },
  };
}

export default function PostsPage({ posts }) {
  return (
    <div>
      {posts.map(post => (
        <div key="{post.id}">
          <h2>{post.title}</h2>
          <p>{post.content}</p>
        </div>
      ))}
    </div>
  );
}

</https:>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

52. Apollo クライアントを Next.js アプリケーションに統合するにはどうすればよいですか?

Apollo Client は、GraphQL を操作するための人気のあるライブラリです。 Next.js アプリケーションに簡単に統合して、サーバー側とクライアント側の両方でデータを取得できます。

Apollo クライアントを統合する手順:

  1. 依存関係のインストール:

    npm install @apollo/client graphql
    
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  2. Apollo クライアントのセットアップ:
    apolloClient.js ファイルを作成して、Apollo クライアントを構成します:

    // lib/apolloClient.js
    import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client';
    
    const client = new ApolloClient({
      link: new HttpLink({ uri: '<https:>' }),
      cache: new InMemoryCache(),
    });
    
    export default client;
    
    </https:>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  3. Pages で Apollo クライアントを使用する:
    getStaticProps、getServerSideProps を使用して Apollo クライアントを使用するか、Apollo の useQuery フックを使用してクライアント上で Apollo クライアントを使用します。

getStaticProps を使用した例:

import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
import client from '../lib/apolloClient';

const GET_POSTS = gql`
  query GetPosts {
    posts {
      id
      title
    }
  }
`;

export async function getStaticProps() {
  const { data } = await client.query({ query: GET_POSTS });

  return {
    props: {
      posts: data.posts,
    },
  };
}

export default function PostsPage({ posts }) {
  return (
    <div>
      {posts.map(post => (
        <div key="{post.id}">
          <h2>{post.title}</h2>
        </div>
      ))}
    </div>
  );
}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

53. Next.js でサーバー側のリダイレクトを実行するにはどうすればよいですか?

Next.js では、getServerSideProps でのリダイレクトを使用するか、ページレベルのリダイレクト用のgenerateStaticParams を使用して、サーバー側のリダイレクトを実行できます。

  1. getServerSideProps の使用: SSR 中に条件に基づいてリダイレクトを処理する必要がある場合は、リダイレクト キーを使用できます。

例:

export async function getServerSideProps(context) {
  // Check some condition, like user authentication
  const isAuthenticated = false;

  if (!isAuthenticated) {
    return {
      redirect: {
        destination: '/login',
        permanent: false, // Optional: set to true for permanent redirects
      },
    };
  }

  return {
    props: {}, // Will pass to the component
  };
}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
  1. グローバル リダイレクトに next.config.js を使用する: リダイレクトをグローバルに処理するには、next.config.js の redirects キーを使用して、ユーザーをリダイレクトするためのルールを設定できます。

例:

// next.config.js
module.exports = {
  async redirects() {
    return [
      {
        source: '/old-page',
        destination: '/new-page',
        permanent: true,
      },
    ];
  },
};

ログイン後にコピー
ログイン後にコピー

この構成は、展開時に /old-page を /new-page に永続的にリダイレクトします。

これらのメソッドを使用すると、サーバー側の条件と Next.js の静的構成の両方に基づいてリダイレクトを処理できます。

54. Next.js で useRouter フックをどのように使用しますか?

Next.js の useRouter フックは、機能コンポーネント内のルーター オブジェクトにアクセスするために使用されます。現在のルート、クエリ パラメーター、パス名、ナビゲーション用のメソッドへのアクセスを提供します。通常、現在のルートに関する情報を取得したり、プログラムで他のルートに移動したりするために使用されます。

使用例:

'use client'; // Required for client-side hooks

import { useRouter } from 'next/router';

export default function MyComponent() {
  const router = useRouter();

  const handleClick = () => {
    // Navigate programmatically to another route
    router.push('/about');
  };

  return (
    <div>
      <p>Current Path: {router.pathname}</p>
      <button onclick="{handleClick}">Go to About Page</button>
    </div>
  );
}

ログイン後にコピー
ログイン後にコピー

共通のプロパティとメソッド:

  • router.pathname: ページの現在のパス。
  • router.query: オブジェクトとしてのクエリ文字列パラメーター。
  • router.push(url): 新しい URL に移動します。
  • router.replace(url): 新しい URL に移動しますが、履歴スタックの現在のエントリを置き換えます。
  • router.back(): 前のページに戻ります。

55. Next.js 内をプログラムで移動するにはどうすればよいですか?

useRouter フックまたは Link コンポーネントを使用して、プログラムで Next.js 内を移動できます。

  1. useRouter フックの使用:
    router.push() メソッドを使用すると、プログラムで新しいページに移動できます。

    例:

    import { request } from 'graphql-request';
    
    export async function getStaticProps() {
      const query = `{
        posts {
          id
          title
          content
        }
      }`;
    
      const data = await request('<https:>', query);
    
      return {
        props: {
          posts: data.posts,
        },
      };
    }
    
    export default function PostsPage({ posts }) {
      return (
        <div>
          {posts.map(post => (
            <div key="{post.id}">
              <h2>{post.title}</h2>
              <p>{post.content}</p>
            </div>
          ))}
        </div>
      );
    }
    
    </https:>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  2. リンクコンポーネントの使用 (宣言型ナビゲーションの場合):

    npm install @apollo/client graphql
    
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  3. router.replace() の使用:
    新しいページをブラウザ履歴スタックに追加せずに移動したい場合は、router.replace().

  4. を使用します。

56. next-i18next とは何ですか? Next.js でどのように使用されますか?

next-i18next は、Next.js の国際化 (i18n) サポートを提供する人気のあるライブラリです。複数言語の翻訳を管理し、ローカリゼーションの設定プロセスを簡素化するのに役立ちます。

next-i18next を使用する手順:

  1. パッケージをインストールします:

    // lib/apolloClient.js
    import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client';
    
    const client = new ApolloClient({
      link: new HttpLink({ uri: '<https:>' }),
      cache: new InMemoryCache(),
    });
    
    export default client;
    
    </https:>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  2. next-i18next を構成します:
    next.config.js で、サポートされるロケールとデフォルト言語を構成します。

    import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
    import client from '../lib/apolloClient';
    
    const GET_POSTS = gql`
      query GetPosts {
        posts {
          id
          title
        }
      }
    `;
    
    export async function getStaticProps() {
      const { data } = await client.query({ query: GET_POSTS });
    
      return {
        props: {
          posts: data.posts,
        },
      };
    }
    
    export default function PostsPage({ posts }) {
      return (
        <div>
          {posts.map(post => (
            <div key="{post.id}">
              <h2>{post.title}</h2>
            </div>
          ))}
        </div>
      );
    }
    
    
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  3. 翻訳ファイルの作成:
    プロジェクトで、public/locales というフォルダーを作成し、各言語の JSON ファイルを追加します。

    export async function getServerSideProps(context) {
      // Check some condition, like user authentication
      const isAuthenticated = false;
    
      if (!isAuthenticated) {
        return {
          redirect: {
            destination: '/login',
            permanent: false, // Optional: set to true for permanent redirects
          },
        };
      }
    
      return {
        props: {}, // Will pass to the component
      };
    }
    
    
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  4. コンポーネントで翻訳を使用する:
    翻訳を取得するには、next-i18next が提供する useTranslation フックを使用します。

    // next.config.js
    module.exports = {
      async redirects() {
        return [
          {
            source: '/old-page',
            destination: '/new-page',
            permanent: true,
          },
        ];
      },
    };
    
    
    ログイン後にコピー
    ログイン後にコピー

57. Next.js でローカリゼーションを実装するにはどうすればよいですか?

Next.js のローカリゼーションは、アプリのコンテンツの翻訳を処理する next-i18next を使用して実装できます。簡単なガイドは次のとおりです:

  1. 質問 74 で述べたように next-i18next を設定します。
  2. 言語固有のファイルを作成します:
    各言語は public/locales ディレクトリに独自の翻訳ファイルを持ちます。たとえば、英語とスペイン語の場合:

    'use client'; // Required for client-side hooks
    
    import { useRouter } from 'next/router';
    
    export default function MyComponent() {
      const router = useRouter();
    
      const handleClick = () => {
        // Navigate programmatically to another route
        router.push('/about');
      };
    
      return (
        <div>
          <p>Current Path: {router.pathname}</p>
          <button onclick="{handleClick}">Go to About Page</button>
        </div>
      );
    }
    
    
    ログイン後にコピー
    ログイン後にコピー
  3. useTranslation:
    を使用して翻訳にアクセスする useTranslation フックを使用して、任意のコンポーネントの翻訳にアクセスします。

    import { useRouter } from 'next/router';
    
    function NavigateButton() {
      const router = useRouter();
    
      const handleNavigation = () => {
        router.push('/new-page'); // Navigates to a new page
      };
    
      return <button onclick="{handleNavigation}">Go to New Page</button>;
    }
    
    
    ログイン後にコピー
  4. 言語切り替えを設定する:
    言語スイッチャーを提供して、ユーザーが言語を切り替えられるようにすることができます。

    import { request } from 'graphql-request';
    
    export async function getStaticProps() {
      const query = `{
        posts {
          id
          title
          content
        }
      }`;
    
      const data = await request('<https:>', query);
    
      return {
        props: {
          posts: data.posts,
        },
      };
    }
    
    export default function PostsPage({ posts }) {
      return (
        <div>
          {posts.map(post => (
            <div key="{post.id}">
              <h2>{post.title}</h2>
              <p>{post.content}</p>
            </div>
          ))}
        </div>
      );
    }
    
    </https:>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー

58. next-seo とは何ですか? Next.js ではどのように使用されますか?

next-seo は、Next.js アプリケーションへの SEO メタデータの追加を簡素化するライブラリです。タイトル、説明、Open Graph タグなどの SEO メタデータを管理するための一連のコンポーネントとユーティリティ関数を提供します。

next-seo を使用する手順:

  1. パッケージをインストールします:

    npm install @apollo/client graphql
    
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  2. SEO メタデータをページに追加します:
    NextSeo コンポーネントを使用して、各ページに SEO メタ タグを追加できます。

    // lib/apolloClient.js
    import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client';
    
    const client = new ApolloClient({
      link: new HttpLink({ uri: '<https:>' }),
      cache: new InMemoryCache(),
    });
    
    export default client;
    
    </https:>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  3. グローバル SEO 設定:
    Pages/_document.js でグローバル SEO 設定を構成して、デフォルトの SEO 設定をすべてのページに適用できます。

59. Google Analytics を Next.js プロジェクトに追加するにはどうすればよいですか?

Google アナリティクスを Next.js プロジェクトに追加するには、next/script コンポーネントを使用して Google アナリティクス スクリプトを

に挿入します。あなたのページの

手順:

  1. Google Analytics アカウントを作成し、トラッキング ID (例: UA-XXXXXX-X) を取得します。
  2. next/script コンポーネントをインストールします (これは Next.js に組み込まれています)。
  3. Google Analytics スクリプトを追加します。pages/_document.js または next/head の Head コンポーネントに追加します。

例:

import { ApolloClient, InMemoryCache, gql } from '@apollo/client';
import client from '../lib/apolloClient';

const GET_POSTS = gql`
  query GetPosts {
    posts {
      id
      title
    }
  }
`;

export async function getStaticProps() {
  const { data } = await client.query({ query: GET_POSTS });

  return {
    props: {
      posts: data.posts,
    },
  };
}

export default function PostsPage({ posts }) {
  return (
    <div>
      {posts.map(post => (
        <div key="{post.id}">
          <h2>{post.title}</h2>
        </div>
      ))}
    </div>
  );
}

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

メモ:

  • 「YOUR_TRACKING_ID」を実際の G​​oogle Analytics トラッキング ID に置き換えます。
  • ページビューやその他のイベントを追跡したい場合は、アプリケーション コードで gtag('event', ...) を使用できます。

59. Next.jsのSSRとCSRの違いは何ですか?

SSR (サーバーサイド レンダリング)CSR (クライアント サイド レンダリング) は、Next.js の 2 つの異なるレンダリング メソッドです。

  • SSR (サーバーサイド レンダリング):
    SSR では、ページはリクエスト中にサーバー上で事前にレンダリングされます。これは、HTML がサーバー上で生成され、完全にレンダリングされたページがクライアントに送信されることを意味します。 SSR は、動的なコンテンツを表示する必要があり、検索エンジンによってインデックス付けされる必要があるページ、または高速な初期ページ読み込みが必要なページに役立ちます。

    • Next.js で SSR を使用する方法: App Router で getServerSideProps を使用して、リクエストごとにサーバー側でデータを取得します。
    export async function getServerSideProps(context) {
      // Check some condition, like user authentication
      const isAuthenticated = false;
    
      if (!isAuthenticated) {
        return {
          redirect: {
            destination: '/login',
            permanent: false, // Optional: set to true for permanent redirects
          },
        };
      }
    
      return {
        props: {}, // Will pass to the component
      };
    }
    
    
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  • CSR (クライアントサイド レンダリング):
    CSR では、ページは完全にクライアント側でレンダリングされます。サーバーから提供される最初の HTML は最小限で (通常はスケルトンまたは読み込みページのみ)、JavaScript がコンテンツのレンダリングを担当します。 CSR は、ユーザーの操作に基づいてコンテンツが頻繁に変更されるアプリケーションに役立ちます。

    • Next.js で CSR を使用する方法: React フックを使用して、クライアント側でデータをフェッチできます。たとえば、クライアント側のデータ取得には Axios または SWR で useEffect を使用します。

60. Next.js アプリを PWA 互換にするにはどうすればよいですか?

Next.js アプリをプログレッシブ Web アプリ (PWA) 互換にするには、Service Worker、マニフェスト ファイルを使用し、アプリをインストール可能に構成する必要があります。

  1. PWA プラグインをインストールします:
    next-pwa プラグインを使用して、Next.js で PWA を簡単に設定します。

    import { request } from 'graphql-request';
    
    export async function getStaticProps() {
      const query = `{
        posts {
          id
          title
          content
        }
      }`;
    
      const data = await request('<https:>', query);
    
      return {
        props: {
          posts: data.posts,
        },
      };
    }
    
    export default function PostsPage({ posts }) {
      return (
        <div>
          {posts.map(post => (
            <div key="{post.id}">
              <h2>{post.title}</h2>
              <p>{post.content}</p>
            </div>
          ))}
        </div>
      );
    }
    
    </https:>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  2. next.config.js で next-pwa を構成します:

    npm install @apollo/client graphql
    
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  3. マニフェスト ファイルを追加します:
    アプリのアイコン、テーマの色、およびその他のプロパティ用に、public/ ディレクトリに manifest.json を作成します。

    // lib/apolloClient.js
    import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client';
    
    const client = new ApolloClient({
      link: new HttpLink({ uri: '<https:>' }),
      cache: new InMemoryCache(),
    });
    
    export default client;
    
    </https:>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
  4. Service Worker の追加:

    next-pwa プラグインは、Service Worker を自動的に生成し、オフライン サポートのためのキャッシュを処理します。

以上がNext.js 面接の習得: 重要な質問 (パート 6)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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