A la découverte de NextJS

NextJS est un framework JavaScript pour ReactJS. Sa première version stable a vu le jour en 2016 et il s'impose très rapidement comme une référence pour développer des applications incluant le Server Side Rendering (SSR) avec ReactJS.

Si vous connaissez l'écosystème JavaScript et la problématique des Single Page Application, c'est bien le rendu serveur. Par exemple, si vous développez une application web en Angular, en ReactJS ou en VueJS sans vous préoccuper du rendu serveur, votre site sera invisible aux yeux des moteurs de recherche. Or, un site qui n'est pas indexable n'a que très peu d'intérêt aujourd'hui. Alors évidement, si votre application ne nécessite pas d'être référencé comme un dashboard applicatif, ce n'est pas très grave. A l'inverse, c'est important si vous avez du contenu à référencer.

Ce que l'on attend généralement dans un tel framework ce sont donc 2 choses :

  • Le SSR
  • Un système de routing

NextJS vient répondre à ces 2 problématiques avec un facilité déconcertante. Le router est très facile à prendre en main et le SSR, il est natif!. Tout comme React, le but est de pouvoir vous laisser le focus sur votre applicatif et pas sur des choses qui peuvent sembler futile. Il a fallut cependant attendre la version 9 (en 2019) pour voir apparaître le routing dynamique. Avant cela, il vous fallait customiser votre serveur ce qui n'était pas forcément très agréable.

En l'ocurrence, dès aujourd'hui il est très facile et rapide de mettre en place son environnement et de développer avec NextJS au point où vous pouvez oublier react-router (personnellement, je n'ai jamais pris la peine de l'utiliser en production même si j'ai déjà joué avec).

Il est embarqué avec NextJS également des avantages intéressants quand on développe comme Webpack 4 et son HMR, qui permet de développer et de voir ses modification appliquées quasi instantanément dans le navigateur, sans perdre le state des composants. Il existe également tout un ensemble de plugins officiels. Que ce soit pour le SEO, l'offline, les progressives web app (PWA), les Webworkers, ... Théoriquement, votre boîte à outil est (presque) complète pour répondre à la plupart de vos besoins.

Je dis "presque" car quel que soit le langage, il nous manquera toujours un petit quelque chose.

Depuis la version 9, vous avez également un système de routing dédié aux routes API. La direction du projet tend à rechercher le "monorepo" et se concentre sur la JAMStack.

Soutenu par l'équipe de Zeit, c'est un framework Open Source avec une communauté très forte. Il permet de démocratiser le CMS Headless et vient largement concurrencer Gatsby.

Prêt à découvrir les coulisses du framework ?!