Maison  >  Article  >  interface Web  >  Maîtrise des entretiens Next.js : questions essentielles (partie 6)

Maîtrise des entretiens Next.js : questions essentielles (partie 6)

Patricia Arquette
Patricia Arquetteoriginal
2024-11-17 17:00:02111parcourir
Next.js Interview Mastery: Essential Questions (Part 6)

Guide d'entretien Next.js : 100 questions et réponses pour réussir (gratuit)

Libérez tout votre potentiel en maîtrisant Next.js avec le guide d'entretien Next.js : 100 questions et réponses pour réussir ?. Que vous débutiez en tant que développeur ou que vous soyez un professionnel expérimenté cherchant à faire passer vos compétences au niveau supérieur, cet e-book complet est conçu pour vous aider à réussir les entretiens Next.js et à devenir un collaborateur confiant et prêt à travailler. promoteur. Le guide couvre un large éventail de sujets Next.js, garantissant que vous êtes bien préparé pour toute question qui pourrait vous être posée. Cet e-book explore des concepts clés tels que le rendu côté serveur (SSR) ?, la génération de sites statiques (SSG ) ?, Régénération statique incrémentielle (ISR) ⏳, Routeur d'application ?️, Récupération de données ?, et bien plus encore. Chaque sujet est expliqué en détail, offrant des exemples concrets et des réponses détaillées aux questions d'entretien les plus fréquemment posées. En plus de répondre aux questions, le guide met en avant les bonnes pratiques ✅ pour optimiser vos applications Next.js, améliorer les performances ⚡ et assurer l'évolutivité ?. Avec Next.js en constante évolution, nous approfondissons également les fonctionnalités de pointe telles que React 18, Concurrent Rendering et Suspense ?. Cela garantit que vous êtes toujours au courant des dernières avancées et que vous disposez des connaissances recherchées par les enquêteurs. Ce qui distingue ce guide est son approche pratique. Il ne couvre pas seulement la théorie, mais fournit des informations exploitables que vous pouvez appliquer directement à vos projets. La sécurité ?, l'optimisation du référencement ? et les pratiques de déploiement ?️ sont également explorées en détail pour garantir que vous êtes prêt pour le cycle de vie complet du développement. Que vous vous prépariez pour un entretien technique dans une entreprise de haute technologie ou que vous cherchiez à construire plus efficacement, applications évolutives, ce guide vous aidera à perfectionner vos compétences Next.js et à vous démarquer de la concurrence. À la fin de ce livre, vous serez prêt à aborder n'importe quelle question d'entretien Next.js en toute confiance, des concepts fondamentaux aux défis de niveau expert. Équipez-vous des connaissances nécessaires pour exceller en tant que développeur Next.js ? et saisissez en toute confiance votre prochaine opportunité de carrière !

Maîtrise des entretiens Next.js : questions essentielles (partie 6) cyroscript.gumroad.com

51. Comment pouvez-vous utiliser GraphQL avec Next.js ?

GraphQL peut être utilisé dans Next.js pour interroger le contenu d'un CMS sans tête ou de n'importe quel point de terminaison GraphQL. Next.js vous permet de récupérer des données de GraphQL lors de la génération statique (avec getStaticProps), du rendu côté serveur (avec getServerSideProps) ou côté client (avec des hooks comme Apollo Client ou URQL).

  1. Utilisation de GraphQL avec getStaticProps ou getServerSideProps : Vous pouvez utiliser des bibliothèques comme graphql-request ou Apollo Client pour récupérer des données GraphQL et les injecter dans la page en tant qu'accessoires.

Exemple avec 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. Comment intégrer Apollo Client dans une application Next.js ?

Apollo Client est une bibliothèque populaire pour travailler avec GraphQL. Il peut être facilement intégré à une application Next.js pour récupérer des données côté serveur et côté client.

Étapes pour intégrer Apollo Client :

  1. Installer les dépendances :

    npm install @apollo/client graphql
    
  2. Configurer le client Apollo :
    Créez un fichier apolloClient.js pour configurer le client 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. Utiliser le client Apollo dans les pages :
    Utilisez le client Apollo avec getStaticProps, getServerSideProps ou sur le client à l'aide du hook useQuery d'Apollo.

Exemple utilisant 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. Comment pouvez-vous effectuer des redirections côté serveur dans Next.js ?

Dans Next.js, vous pouvez effectuer des redirections côté serveur en utilisant la redirection dans getServerSideProps ou generateStaticParams pour la redirection au niveau de la page.

  1. Utilisation de getServerSideProps : Si vous devez gérer les redirections en fonction des conditions pendant SSR, vous pouvez utiliser la clé de redirection.

Exemple :

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. Utilisation de next.config.js pour les redirections globales : Pour gérer les redirections à l'échelle mondiale, vous pouvez utiliser la clé de redirection dans next.config.js pour configurer des règles de redirection des utilisateurs.

Exemple :

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

Cette configuration redirigera /old-page vers /new-page de manière permanente une fois déployée.

Ces méthodes vous permettent de gérer les redirections basées à la fois sur les conditions côté serveur et les configurations statiques dans Next.js.

54. Comment utilisez-vous le hook useRouter dans Next.js ?

Le hook useRouter de Next.js est utilisé pour accéder à l'objet routeur dans les composants fonctionnels. Il donne accès à l'itinéraire actuel, aux paramètres de requête, au nom de chemin et aux méthodes de navigation. Il est généralement utilisé pour obtenir des informations sur l'itinéraire actuel ou pour naviguer par programme vers d'autres itinéraires.

Exemple d'utilisation :

'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>
  );
}

Propriétés et méthodes communes :

  • router.pathname : Le chemin actuel de la page.
  • router.query : les paramètres de la chaîne de requête en tant qu'objet.
  • router.push(url) : accédez à une nouvelle URL.
  • router.replace(url) : accédez à une nouvelle URL mais remplacez l'entrée actuelle dans la pile d'historique.
  • router.back() : Retour à la page précédente.

55. Comment pouvez-vous naviguer par programme dans Next.js ?

Vous pouvez naviguer par programme dans Next.js à l'aide du hook useRouter ou du composant Link.

  1. Utilisation du hook useRouter :
    La méthode router.push() peut être utilisée pour naviguer par programme vers une nouvelle page.

    Exemple :

    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. Utilisation du composant Link (pour la navigation déclarative) :

    npm install @apollo/client graphql
    
  3. Utilisation de router.replace() :
    Si vous souhaitez naviguer sans ajouter la nouvelle page à la pile de l'historique du navigateur, utilisez router.replace().

56. Qu'est-ce que next-i18next et comment est-il utilisé dans Next.js ?

next-i18next est une bibliothèque populaire qui fournit la prise en charge de l'internationalisation (i18n) pour Next.js. Il permet de gérer les traductions dans plusieurs langues et simplifie le processus de configuration de la localisation.

Étapes pour utiliser next-i18next :

  1. Installer le package :

    // 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. Configurer le next-i18next :
    Dans next.config.js, configurez les paramètres régionaux pris en charge et la langue par défaut.

    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. Créer des fichiers de traduction :
    Dans votre projet, créez un dossier appelé public/locales et ajoutez des fichiers JSON pour chaque langue.

    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. Utiliser les traductions dans les composants :
    Utilisez le hook useTranslation fourni par next-i18next pour obtenir des traductions.

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

57. Comment implémentez-vous la localisation dans Next.js ?

La localisation dans Next.js peut être implémentée à l'aide de next-i18next, qui gère la traduction du contenu de votre application. Voici un bref guide :

  1. Configurez next-i18next comme mentionné à la question 74.
  2. Créer des fichiers spécifiques à une langue :
    Chaque langue aura son propre fichier de traduction dans le répertoire public/locales. Par exemple, pour l'anglais et l'espagnol :

    '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. Accédez aux traductions en utilisant useTranslation :
    Utilisez le hook useTranslation pour accéder aux traductions dans n’importe quel composant.

    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. Configurer le changement de langue :
    Vous pouvez fournir un sélecteur de langue pour permettre aux utilisateurs de basculer entre les langues.

    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. Qu'est-ce que next-seo et comment est-il utilisé dans Next.js ?

next-seo est une bibliothèque qui simplifie l'ajout de métadonnées SEO à votre application Next.js. Il fournit un ensemble de composants et de fonctions utilitaires pour gérer les métadonnées SEO telles que les titres, les descriptions et les balises Open Graph.

Étapes pour utiliser next-seo :

  1. Installer le package :

    npm install @apollo/client graphql
    
  2. Ajoutez des métadonnées SEO à vos pages :
    Vous pouvez utiliser le composant NextSeo pour ajouter des balises méta SEO à chaque page.

    // 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. Paramètres SEO globaux :
    Vous pouvez configurer les paramètres de référencement globaux dans pages/_document.js pour appliquer les paramètres de référencement par défaut à toutes les pages.

59. Comment ajouter Google Analytics à un projet Next.js ?

Pour ajouter Google Analytics à votre projet Next.js, vous pouvez utiliser le composant next/script pour insérer le script Google Analytics dans le fichier

de vos pages.

Étapes :

  1. Créez un compte Google Analytics et obtenez l'ID de suivi (par exemple, UA-XXXXXX-X).
  2. Installez le composant next/script (il est intégré à Next.js).
  3. Ajoutez le script Google Analytics dans vos pages/_document.js ou dans le composant Head de next/head.

Exemple :

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>
  );
}

Remarques :

  • Remplacez « YOUR_TRACKING_ID » par votre identifiant de suivi Google Analytics réel.
  • Si vous souhaitez suivre les pages vues et d'autres événements, vous pouvez utiliser gtag('event', ...) dans le code de votre application.

59. Quelle est la différence entre SSR et CSR dans Next.js ?

SSR (Server-Side Rendering) et CSR (Client-Side Rendering) sont deux méthodes de rendu différentes dans Next.js.

  • SSR (rendu côté serveur) :
    En SSR, la page est pré-rendue sur le serveur lors de la requête. Cela signifie que le HTML est généré sur le serveur et que la page entièrement rendue est envoyée au client. SSR est utile pour les pages qui doivent afficher du contenu dynamique et qui doivent être indexées par les moteurs de recherche ou qui nécessitent un chargement initial rapide des pages.

    • Comment utiliser SSR dans Next.js : utilisez getServerSideProps dans le App Router pour récupérer les données côté serveur pour chaque requête.
    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 (rendu côté client) :
    En CSR, la page est entièrement rendue côté client. Le code HTML initial servi par le serveur est minime (généralement juste un squelette ou une page de chargement) et JavaScript est responsable du rendu du contenu. La RSE est utile pour les applications où le contenu change fréquemment en fonction de l'interaction de l'utilisateur.

    • Comment utiliser CSR dans Next.js : Vous pouvez récupérer des données côté client à l'aide de hooks React, par exemple, useEffect avec Axios ou SWR pour la récupération de données côté client.

60. Comment rendre une application Next.js compatible PWA ?

Pour rendre une application Next.js compatible avec Progressive Web App (PWA), vous devez utiliser des service Workers, des fichiers manifestes et configurer votre application pour qu'elle soit installable.

  1. Installer le plugin PWA :
    Utilisez le plugin next-pwa pour configurer facilement PWA dans Next.js.

    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. Configurez next-pwa dans next.config.js :

    npm install @apollo/client graphql
    
  3. Ajouter un fichier manifeste :
    Créez un manifest.json dans le répertoire public/ pour les icônes, la couleur du thème et d'autres propriétés de votre application :

    // 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. Ajouter un travailleur de service :

    Le plugin next-pwa génère automatiquement un service worker et gère la mise en cache pour l'assistance hors ligne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn