Pourquoi ne pas utiliser React JS pour des projets frontaux interactifs complexes ?

React est un excellent outil pour les sites web interactifs simples. Mais dans quelle mesure est-il applicable aux projets frontaux complexes ? Analyse des 4 problèmes majeurs et des alternatives possibles.
Sommaire
  1. Points clés de l'analyse
  2. Problème 1 : composants difficiles à réutiliser
  3. Problème 2 : DOM virtuel lent et imprécis
  4. Problème 3 : templates HTML incomplets
  5. Problème 4 : programmation asynchrone complexe
  6. Les alternatives a React
  7. Conclusion

React est un excellent outil pour mettre en oeuvre des sites web interactifs simples. Mais dans quelle mesure est-il applicable aux projets frontaux complexes ? Est-ce que cela fonctionne aussi bien dans ce contexte ? Dans cet article, nous allons examiner certains des problèmes que vous pouvez rencontrer lors de l'utilisation de React pendant le développement web.

1. Points clés de l'analyse

Avant d'entrer dans le détail, voici les quatre problèmes principaux identifies avec React dans les projets complexes :

Pour beaucoup, le framework React semble plus simple et plus convivial qu'AngularJS. L'une de ses fonctions les plus utiles est la liaison de données qui permet d'associer des sources de données à des éléments de pages web. Si vous expérimentez TodoMVC, vous constaterez que les implémentations peuvent varier en taille de code selon les choix techniques. Pour approfondir vos connaissances en JavaScript, consultez nos 10 conseils pour apprendre le JavaScript.

2. Problème 1 : composants difficiles à réutiliser

L'unité de réutilisation dans React est le composant. Il est plus léger que le contrôleur et la vue dans AngularJS. Tout ce qu'un développeur web doit faire, c'est mettre en oeuvre une fonction de rendu qui traduit les propriétés (props) et l'état du composant en éléments HTML.

Ce composant léger est très utile pour créer des pages web simples. Toutefois, lorsque la communication entre les composants est nécessaire, le passage de fonctions de rappel (callbacks) est inévitable. En particulier pour les pages web aux structures complexes, les composants et les rappels peuvent être organisés sur plusieurs niveaux.

Logo React JS avec composants et architecture frontend

Dans ce type de projets web complexes et interactifs, le code peut devenir encombre et difficile à maintenir selon l'architecture choisie. Cette cascade de callbacks rend le débogage particulièrement pénible et le refactoring risque.

3. Problème 2 : le DOM virtuel est lent et imprécis

L'algorithme de rendu dans React utilise le DOM virtuel. Le développeur doit fournir une fonction de rendu qui créé un DOM virtuel en utilisant les propriétés et l'état du composant. React applique ensuite au DOM réel les changements issus du rendu.

Lorsque l'état change, React peut effectuer un nouveau rendu. Il analyse ensuite les différences entre l'ancienne et la nouvelle version du DOM virtuel et les applique au DOM réel. Ce procédé présente deux inconvénients majeurs :

Les développeurs web peuvent utiliser la propriété key et certaines optimisations selon les besoins.

4. Problème 3 : templates HTML incomplets et limites

React prend en charge JSX pour le développement de modèles HTML. En théorie, les développeurs frontaux peuvent transformer du HTML statique en page web dynamique en copiant simplement le HTML dans des fichiers JSX et en ajoutant un peu de code supplémentaire.

Code source sur un écran illustrant le developpement frontend avec React

Malheureusement, le support HTML de React est incomplet. Le développeur doit remplacer manuellement class par className et for par htmlFor. La syntaxe des styles en ligne utilise un objet JavaScript. De plus, la validation des données peut être mise en place au moment de l'exécution.

React peut signaler certaines erreurs dans les noms. Par exemple, si vous écrivez onclick au lieu de onClick, le gestionnaire d'événement risque de ne pas fonctionner comme prévu. Pour mieux comprendre les langages qui sous-tendent ces frameworks, consultez notre article sur les langages de programmation les plus demandes.

5. Problème 4 : programmation asynchrone complexe

Considérez le travail de React avec le serveur selon l'architecture choisie. Un développeur web peut mettre en oeuvre une couche d'accès aux données, un état et une fonction de rendu selon l'architecture choisie.

L'accès à l'API dorsale et la gestion de l'état dépendent de l'architecture choisie. Au cours de ce processus, les programmeurs frontaux doivent développer une procédure asynchrone composée d'un tableau de fermetures. Le code d'une telle procédure devient inévitablement confus et source d'erreurs.

Même si vous faites très attention à garder la trace de toutes sortes d'événements asynchrones, le processus de débogage et de maintenance d'un tel programme devient extrêmement difficile. C'est un défi particulier pour les équipes qui travaillent sur des projets de grande envergure. Pour des ressources supplémentaires sur le développement web, consultez codeyourweb.org.

6. Les alternatives a React pour les projets complexes

Binding.scala semble similaire a React a certains égards, mais le mécanisme sous-jacent est complètement différent. Il est plus simple et plus polyvalent, offrant une flexibilité et une puissance supérieures pour les projets complexes.

Code informatique sur écran sombre illustrant la complexite de la programmation asynchrone

D'autres alternatives méritent également d'être considérées :

7. Conclusion

En plus des quatre aspects mentionnes ci-dessus, il y a également le problème de la gestion de l'état dans React. Si vous utilisez une bibliothèque tierce comme Redux pour gérer l'état, la structure de l'application devient encore plus confuse et le nombre de couches augmente.

React reste un outil puissant pour de nombreux cas d'utilisation, mais il est important de connaître ses limites avant de l'adopter pour un projet complexe. Le choix du framework doit se faire en fonction des besoins spécifiques du projet, de la taille de l'équipe et des contraintes techniques.

Si vous décidez malgré tout d'utiliser React, reste à savoir comment démarrer un projet React avec Vite ou Next.js sans vous tromper d'outil.

Avant d'adopter React pour un projet complexe, évaluez la gestion d'état nécessaire (Redux ou équivalent) : c'est souvent la ou la complexité explose le plus rapidement, plus que dans le rendu d'interface lui-même.

Questions fréquentes

Quels sont les principaux problèmes de React pour les projets complexes ?

Les 4 problèmes majeurs sont : la difficulté de réutilisation des composants dans des projets complexes, la lenteur et l'imprécision du DOM virtuel, l'incompletude des templates HTML JSX, et la complexité de la programmation asynchrone pour la communication serveur.

Quelle est l'alternative a React pour les projets frontaux complexes ?

Binding.scala est présentée comme une alternative qui résout certains problèmes de React. D'autres frameworks comme Vue.js, Svelte ou Angular peuvent également être envisagés selon les besoins spécifiques du projet.

Le DOM virtuel de React est-il vraiment lent ?

Le DOM virtuel de React peut nécessiter des optimisations dans les projets complexes. Les développeurs doivent utiliser des optimisations comme shouldComponentUpdate et la propriété key pour améliorer les performances.