Next.js 15 propose des composants serveur et client pour la récupération de données, chacun avec des forces et des faiblesses uniques en termes de performances, de référencement et de comportement. Axios, un choix populaire pour sa simplicité, fonctionne efficacement dans les deux cas. Ce guide explore l'utilisation d'Axios dans les deux types de composants, en mettant en évidence les principales différences et les meilleures pratiques.
Feature | Server Component | Client Component |
---|---|---|
Rendering Location | Server-side, before HTML delivery. | Client-side, post-page load. |
SEO Impact | SEO-friendly; data in initial HTML. | Not SEO-friendly; client-side data fetch. |
View Source Data | Data visible in HTML source. | Data fetched dynamically; not in source. |
Reactivity | Non-reactive; for static data. | Reactive; ideal for interactive UIs. |
Les composants du serveur récupèrent les données lors du rendu côté serveur. Cela améliore le référencement en incluant les données directement dans le HTML.
Exemple : récupération de données côté serveur
// app/server-component-example/page.tsx import axios from 'axios'; interface Post { id: number; title: string; body: string; } const fetchPosts = async (): Promise<Post[]> => { const { data } = await axios.get<Post[]>('https://jsonplaceholder.typicode.com/posts'); return data; }; export default async function ServerComponentExample() { const posts = await fetchPosts(); return ( <div> <h1>Server-Fetched Posts</h1> <ul> {posts.map((post) => ( <li key={post.id}>{post.title}</li> ))} </ul> </div> ); }
Considérations clés :
Les composants clients récupèrent les données après le chargement de la page dans le navigateur. Cette approche n'est pas optimisée pour le référencement mais permet des mises à jour dynamiques.
Exemple : récupération de données côté client
'use client'; import axios from 'axios'; import { useEffect, useState } from 'react'; interface Post { id: number; title: string; body: string; } export default function ClientComponentExample() { const [posts, setPosts] = useState<Post[]>([]); const [loading, setLoading] = useState(true); useEffect(() => { const fetchPosts = async () => { try { const { data } = await axios.get<Post[]>('https://jsonplaceholder.typicode.com/posts'); setPosts(data); } catch (error) { console.error('Error fetching posts:', error); } finally { setLoading(false); } }; fetchPosts(); }, []); if (loading) return <div>Loading...</div>; return ( <div> <h1>Client-Fetched Posts</h1> <ul> {posts.map((post) => ( <li key={post.id}>{post.title}</li> ))} </ul> </div> ); }
Considérations clés :
Use Case | Recommended Component |
---|---|
SEO-critical data (blog posts) | Server Component |
User-specific or dynamic data | Client Component |
Frequently updated data | Client Component |
Static, rarely changing data | Server Component |
try...catch
pour une gestion robuste des erreurs.Axios propose une approche flexible et simple de la récupération de données dans Next.js 15. En tirant parti des capacités distinctes des composants serveur et client et en adhérant aux meilleures pratiques, les développeurs peuvent créer des applications performantes, sécurisées et optimisées pour le référencement. N'oubliez pas de donner la priorité aux composants serveur pour les données statiques et critiques pour le référencement, et aux composants clients pour les interactions utilisateur dynamiques. Mettez toujours en œuvre des mesures de gestion des erreurs et de sécurité approfondies.
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!