Retour • 21/11/2024
React en front-end ou back-end ?
Écris par Melvyn Malherbe le 21/11/2024
React est une librairie web qui a été créée par Facebook principalement pour créer des interfaces complexes côté front-end. Mais depuis l'arrivée de meta-framework comme NextJS on peut se demander si c'est toujours une librairie front-end ou si au contraire c'est devenu une librairie back-end.
Pourquoi React est front-end ?
Alors il faut bien définir ce qu'est le front-end. C'est tout ce qui va être envoyé et exécuté côté client.
Le useState
par exemple permet de gérer les états locaux de ton application, on ne parle pas de serveur ici mais vraiment de données locales c'est pour cette raison que c'est vraiment "front-end".
Mais est-il possible d'utiliser React pour faire du back-end ?
NextJS change tout
NextJS
est arrivé en proposant clairement un moyen de faire du back-end avec React. Comment ? À l'époque c'était d'utiliser des méthodes getServerSideProps
ou getStaticProps
qui permettent de récupérer des données directement côté serveur puis de les injecter dans nos composants HTML
. Si tu veux en savoir plus tu peux regarder ma formation NextJS.
Mais récemment, NextJS
ou Vercel
a travaillé avec l'équipe de React et ont fait une énorme nouveauté : du backend par défaut dans React
.
Back-end avec React
Le fameux "use server"
ou les Server Components ont été ajoutés dans React et comme leur nom l'indique, ils permettent de faire des choses côté serveur et pas côté client.
Ce qui change tout et ouvre la voie à vraiment faire du fullstack avec React. Voici typiquement un exemple de todo list
qui fonctionne avec React 100% en backend :
import { revalidatePath } from "next/cache";
import { prisma } from "@/lib/prisma";
export default async function TodoList() {
const todos = await prisma.todo.findMany();
const addTodo = async (formData: FormData) => {
"use server";
const name = formData.get("name");
await prisma.todo.create({ data: { name } });
revalidatePath("/");
};
return (
<div>
<form action={addTodo}>
<input type="text" name="name" />
<button type="submit">Add Todo</button>
</form>
</div>
)
}
Ce code :
- utilise un
server component
pour récupérer les todos et les afficher 100% côté serveur - utilise une
server action
pour modifier les todos - utilise une méthode NextJS (revalidatePath) pour revalider la page et récupérer les nouvelles données
Ce code, mis à part le revalidatePath
est 100% géré côté React. Ce n'est pas de la magie de NextJS comme à l'époque mais bien la magie de React utilisable par d'autres librairies.
La team React a travaillé sur une API disponible pour faire du backend avec React.
React back-end ou front-end ?
React
est principalement une librairie front-end, c'est-à-dire que si tu n'utilises que ces fonctionnalités backend tu ne vas pas vraiment profiter de tout ce que peut proposer React. Cependant, maintenant on peut dire que React est devenu une librairie fullstack.
On est loin de l'époque où on injectait du React
dans des pages PHP
ou Ruby
pour ajouter des modals.
Maintenant on utilise des frameworks construits autour de React comme NextJS pour créer des applications complètes et full-stack.
Conclusion
Apprendre React est devenu plus essentiel que jamais et permet de créer des applications complètes que ce soit côté front-end ou back-end. NextJS est aussi un bon moyen de commencer en apprenant NextJS.