codelynx.dev
🇫🇷🇬🇧

Retour 17/11/2024

NextJS vs React : Quelle technologie choisir pour tes projets ?

Écris par Melvyn Malherbe le 17/11/2024


React.JS est très populaire, mais concrètement, c'est quoi ? Un framework, une librairie ou les deux ? Cette question fait débat. Surtout que NextJS, lui se présente comme un framework.

Dans cet article, je vais t'expliquer les différences entre React et NextJS, et quand les utiliser.

C'est quoi React ?

Landing page de React

React est une librairie JavaScript développée par Facebook pour construire des interfaces utilisateur. Elle se concentre sur la création de composants réutilisables et utilise le Virtual DOM pour optimiser les mises à jour de l'interface utilisateur. Cette approche permet de rendre les applications plus performantes en minimisant les manipulations directes du DOM, ce qui est souvent coûteux en termes de ressources.

L'un des principaux avantages de React est sa flexibilité. En tant que librairie, elle ne dicte pas une structure rigide pour tes applications, te permettant ainsi de choisir les outils et les bibliothèques qui répondent le mieux à tes besoins spécifiques. Cela en fait un choix populaire pour les développeurs qui souhaitent créer des applications Single Page Applications (SPA) où l'interaction se fait principalement côté client.

J'ai écrit un article complet qui t'explique précisément ce qu'est React.

C'est quoi NextJS ?

Landing page de NextJS

NextJS est un framework basé sur React qui facilite le développement d'applications web modernes. Il ajoute des fonctionnalités comme le rendu côté serveur (SSR), le rendu statique (SSG), et le routage automatique, ce qui en fait un choix idéal pour les applications qui nécessitent des performances optimisées et un bon référencement SEO.

Avec NextJS, tu peux facilement créer des applications qui se chargent rapidement et sont bien indexées par les moteurs de recherche. Cela est particulièrement important pour les sites web qui dépendent du trafic organique pour attirer des utilisateurs. En outre, NextJS simplifie le développement d'applications fullstack en intégrant des fonctionnalités comme l'API Routes, qui te permet de créer des API directement dans ton projet NextJS.

Pour en savoir plus sur NextJS, je t'invite à suivre ma formation NextJS totalement gratuite.

C'est paradoxal de comparer NextJS à React car en réalité, il n'est pas possible d'utiliser NextJS sans React.

En d'autres termes, NextJS utilise et étend les fonctionnalités de React pour offrir une solution plus complète. Cela signifie que si tu es déjà familier avec React, tu pourras facilement adopter NextJS et bénéficier de ses fonctionnalités avancées sans avoir à réapprendre les bases de la création d'interfaces utilisateur.

Ce qu'on compare en vrai, c'est "React avec ViteJS en mode SPA" et "NextJS".

React en mode SPA

Il faut bien comprendre que React n'est qu'un outil qui permet de gérer l'interface utilisateur, de base il ne permet PAS de gérer des choses comme le routage etc... Dans ce cas là, on parle de SPA.

C'est quoi une SPA ?

SPA pour Single Page Application définit une application qui n'a qu'une page. Quand tu es sur Facebook, il y a plusieurs pages qui sont définit par les urls comme /profile ou /feed. Avec React en mode SPA, généralement on a qu'une seul page.

Lorsque tu souhaites créer une application qui n'a pas besoin de routage complexe et qui fonctionne principalement côté client, utiliser React avec ViteJS en mode SPA est une excellente option. ViteJS offre un environnement de développement rapide et léger, idéal pour des applications où il n'y a pas de "backend" ou de "server-components".

Ce choix est particulièrement adapté aux projets qui nécessitent une interaction utilisateur rapide et fluide, sans les contraintes du rendu côté serveur. Par exemple, si tu développes une application de tableau de bord interne ou un outil interactif qui ne nécessite pas de chargement de pages distinctes, React avec ViteJS peut offrir une expérience utilisateur optimale.

Quand utiliser NextJS ?

NextJS est idéal lorsque tu as besoin de créer une application soit fullstack, soit frontend avec des pages distinctes, optimisée pour le SEO et les performances. Il offre des fonctionnalités comme le rendu côté serveur et le rendu statique, qui améliorent la vitesse de chargement et l'indexation par les moteurs de recherche.

Si ton projet nécessite une optimisation SEO, NextJS est un choix judicieux. Grâce à ses capacités de rendu côté serveur, tu peux créer des pages qui se chargent rapidement et sont bien indexées par les moteurs de recherche, ce qui est crucial pour attirer du trafic organique.

De plus, si tu développes une application fullstack, NextJS offre des fonctionnalités intégrées pour gérer à la fois le frontend et le backend. Avec l'API Routes, tu peux créer des API directement dans ton projet NextJS, simplifiant ainsi le développement d'applications complètes.

Alternatives à NextJS : Astro et Remix

Si NextJS ne répond pas à tous tes besoins, tu peux envisager des alternatives comme Astro et Remix. Astro est conçu pour créer des sites statiques ultra-rapides, en se concentrant sur la performance et la simplicité. Il est idéal pour les projets où le contenu statique est prédominant et où la vitesse de chargement est une priorité.

Remix, quant à lui, se concentre sur l'expérience utilisateur et la gestion des données côté serveur. Il offre une approche moderne pour le développement d'applications web, en mettant l'accent sur la performance et l'expérience utilisateur. Remix est particulièrement adapté aux projets qui nécessitent une gestion avancée des données et une expérience utilisateur fluide

Conclusion

Choisir entre React et NextJS dépend de tes besoins spécifiques. Utilise React avec ViteJS pour des applications SPA légères et rapides, et opte pour NextJS lorsque tu as besoin d'une application fullstack ou optimisée pour le SEO. Explore également des alternatives comme Astro et Remix pour trouver la solution qui te convient le mieux.

FeatureNextJSReact SPA (with ViteJS)
RoutingAutomatiqueManuel (via React Router)
API RoutesIntégréesNon supportées nativement
Server ComponentsSupportésNon supportés
Server ActionsSupportésNon supportés
MiddlewareSupportésNon supportés
CachingIntégré (ISR)Non supportés
AuthentificationManuel (via Auth.js)Nécessite un serveur backend séparer
NavigationSupportés (via Link)Manuel (via React Router)

Ce que dis la documentation

La documentation React est plutôt claire : il faut généralrment utilisé un outil comme NextJS ou Remix. Ceux-ci viennent optimisé tes pages et appliques par défaut les bonnes pratique du monde React.

Tu n'as pas besoin d'utiliser NextJS en mode "backend" pour avoir besoin de l'utiliser. Tu peux très bien faire du NextJS en utilisant un serveur backend séparer. Les server-components sont aussi fait pour fetch des données de ton backend.

TSX
export default async function Page() {
  const data = await fetch("https://backend.app.com/api/users")
  const users = await data.json()

  return <div>{users.map((user) => <div>{user.name}</div>)}</div>
}

Si tu veux apprendre à utilsier React car quand même, si tu ne mâitrises pas React tu risques de galérer en NextJS, inscrit-toi ici :

Le meilleur moyen d'apprendre React !

Rejoins par développeurs, cette formation reçoit une note de 4.7 / 5 🚀

Reçois 12 leçons premium pour maîtriser React et faire partie des meilleurs

BeginReact

Cours React gratuit

Accède à des exercices, des vidéos et bien plus sur React dans la formation "BeginReact" 👇