- Published on
[web] - Pourquoi Next.js plutôt que create-react-app
- Authors
- Name
- Tawaliou ALAO
- @Tawal_Mc
This article is available in english on my account on Dev.to
Image from Morioh
Pourquoi se fatiguer à faire un lot de configurations si on peut juste commencer par travailler sans se gêner? Bien, je vous explique ici (avec de l'humour) pourquoi je recommande de débuter un nouveau projet avec Next.js au lieu d'utiliser create-react-app.
Rappel sur React.js (create-react-app) et Next.js
React.js, le soldat de l'armée des devs
Alors React.js est un framework (frontend) basé sur JavaScript et développé par nos amis développeurs de Meta (vous savez, l'entreprise qui veut dépasser le monde physique) en 2013 (j'étais en classe de ). Donc il te permet en gros :
- d'avoir des composants réutilisables avec des caractéristiques (propriétés)
- d'embarqué du JavaScript dans du HTML avec un certain charisme
- de permettre aux composants d'avoir des cycles de vie, un état que le dev peut influencer
Un code en React ressemble à ceci :
import { useEffect, useState } from 'react'
export const NavBar = (props) => {
const [news, setNew] = useState(false)
useEffect(() => {
console.log('We are in NavBar')
}, [])
return (
<nav>
<ul>
<li>Home</li>
<li>About</li>
<li>{props.serviceName}</li>
<li>{props.locationName}</li>
{news && <li>News</li>}
</ul>
</nav>
)
}
Mais là n'est pas le but de cet article, parlons de create-react-app. Oui Create React App, l'outil mis en place par l'équipe derrière React pour débuter un projet en react. Déjà il est très bon, tout développeur React l'a utilisé au moins une fois genre:
npm install react-scripts@latest
Donc avec cette commande tu as ton projet React qui est initialisé et pata-boom; un dossier minimaliste, où tu dois
littéralement tout configurément: du routage à eslint (ma bête noire) en passant par la création des dossiers phares.
Un coup d'oeil à l'article de Hudson Kunde sur Morioh qui parle de la structure des fichiers...
Fatigant et ennuyant parfois. Et même avec la version récente pour avoir du Server Side Rendering c'est du boulot, bref nous sommes
avec du Client Side Rendering (le rendu de la page basé sur le bundle de JavaScript se fait par le navigateur
).
Genre tu as un tout mignon paquet de JavaScript qui est balancé aux navigateurs en lui disant: Hey frangin, débrouille toi de me faire ce rendu de JS.
Et là les devs de Vercel rentrent dans le game.
Next.js, le bouclier de React
Bon le titre est un peu forcé mais honnêtement c'est comme ça je considère Next.js.
Déjà Next.js est développé par Vercel en 2016 (là je passe mon Bac). Vercel ?
Bah vous savez je me dis que, quand les devs de se level sont parfois ennuyés ou se lèvent tout joyeux ils se disent :
et si on développait un projet histoire de passer le temps ?
. Bah c'est exactement ce qui s'est passé. Ils développent
Next.js avec comme buts:
- tout se fait en JavaScript et partout (comme s'ils avaient pensé à moi)
- toutes les configurations/fonctionnalités standards dont le le SSR (Server Side Rendering) seront defacto incluses (je vous dis qu'ils ont pensé à moi)
- facilter le déployement d'une application web (et oui la plateforme Vercel est là pour ça)
- etc
Voir cet article de Wikipedia sur les 6 principes derrières Next.js.
En gros, Next.js est basé sur React.js donc vous aurez à utiliser les fonctionnalités de React (state, lifecycle, props,...) mais ce sont les mmultiples fonctionnalités de Next.js qui font de lui un de mes frameworks préférés. Dans la suite je vous présente juste 3 de ces fonctionnalités que j'utilise actuellement et qui sont pour moi les meilleures (expérience).
Pourquoi alors Next.js et non create-react-app
Déjà pour débuter un projet Next.js on peut simplement :
npx create-next-app //et vous suivez les instructions
Alors les 3 fonctionnalités dont je parle :
Routes basées sur les fichiers (pages) js/jsx
Là c'est du lourd: les routes de votre application sont basées sur les fichiers js/jsx
que vous crééz dans le dossier
pages
. Donc si on a:
pages - index.js - about.js - contact.js
vous avez alors les pages:
`index.js` -> `/`
`about.js` -> `/about.html`
`contact.js` -> `/contact.html`
Reconnaissez la classe!!! Et oui cela nous épargne les: react-router
, react-router-browser
, react-router-browser-router
, etc (j'exagère)
qu'il fallait pour gérer les pages avec create-react-app. Ouff!!
Et ils sont allés loin (franchement ils ne dorment pas) en mettant à disposition le dossier api
à l'intérieur du dossier pages
où vous pouvez définir les routes de votre api (REST par exemple) si
vous voulez mettre à disposition des données/API à des devs ou à d'autres équipes. Donc plus besoin d'aller
créer un autre projet en Node.js et créer une API à part entière.
Enfin ?
Ce n'est pas pour balayé du revers de la main create-react-app qui reste super comme outils mais si vous
êtes comme moi et parfois vous aimez vite débuter les projets sans pour autant vous souciez des questions de
config ou de setup alors Next.js est pour vous. Et aussi c'est un framework progressiste
(rien avoir avec la politique) donc des améliorations et ajouts sont très fréquents.
Au passage j'ai déployé sur Vercel une appli orientée mobile basée sur Next.js, Chakra UI (UI Components) et Lingui.js pour la traduction du site (internationalisation) et qui est disponible ici.
Je vous propose prochainement d'aller à la découverte de ces 4 (frameworks) mousquetaires basés sur React
à savoir...
Je partage quelques astuces que j'utilise dans mes tâches quotidiennes et j'espère que vous en avez d'autres que vous voulez partager avec nous. Je suis ouvert aux conseils, et mes comptes sociaux (ci-dessous) sont là pour ça.
So can you smell what TawalMc is cooking?