BT

La bibliothèque d'interfaces utilisateur React de Facebook reçoit des critiques mitigées

par Zef Hemel , traduit par Cédric Nisio le 26 juin 2013 |

Facebook a ouvert le code source de React, sa bibliothèque JavaScript prévue pour écrire des interfaces utilisateur réactives, utilisée pour réaliser le site web Instagram ainsi que des parties du site web Facebook. Suivant la tendance actuelle des frameworks comme AngularJS, MeteorJS et Model-Driven Views implémenté par exemple par Polymer, React est basé sur l'idée de spécifications déclaratives des interfaces par-dessus un modèle de données, dans lesquelles les interfaces utilisateur gardent automatiquement la synchronisation avec la couche de données sous-jacente. À l'inverse des frameworks précédemment mentionnés, React utilise le JavaScript plutôt que le HTML pour construire ces interfaces utilisateur, en citant la flexibilité pour justifier ce choix de conception.

Bien que n'étant pas dépendant de lui, les exemples de code sur le site web React reposent tous sur JSX, une extension de JavaScript avec des littéraux XML. Voici l'exemple typique "Hello World" écrit en React, utilisant JSX :

/** @jsx React.DOM */
var HelloMessage = React.createClass({
  render: function() {
    return <div>{'Hello ' + this.props.name}</div>;
  }
});

React.renderComponent(<HelloMessage name="World" />,
                      mountNode);

Le XML embarqué est converti en appels à l'API du DOM en JavaScript ordinaire dans une étape de pré-compilation.

Depuis son lancement, la bibliothèque a été largement décriée. Les critiques visent généralement deux points : le mélange de la vue et de la logique, et la verbosité du code par rapport aux frameworks existants.

Mélange (apparent) de la vue et du contrôleur

Un utilisateur de Reddit, ‘rhysbrettbowen’, écrit :

Je comprends que JSX n'est pas nécessaire, mais nous avons passé tant de temps à sortir la logique du HTML que maintenant nous voulons à la place mettre le HTML dans la logique?

Le plus gros problème avec cela est que ça ne va pas de pair avec la séparation du HTML et de la logique métier. S'ils sont séparés alors vous pouvez avoir des graphistes qui travaillent sur le html et les styles, et des développeurs peuvent travailler à la place sur le code en fournissant juste des points d’attache pour aller dans le template.

En réponse à cela et à des commentaires similaires, Peter Hunt de l'équipe React à Facebook explique dans un billet de blog que React n'essaie pas du tout de mélanger la vue de votre application et sa logique :

Nous nous souvenons tous des jours où nous mélangions notre PHP avec du HTML. Le code était vraiment très difficile à maintenir et la sécurité n’était réfléchie qu’après coup. Nous ne voulons pas revenir à ces jours.

Depuis ce temps-là, nous avons développé des langages de templates côté client et serveur pour éviter aux ingénieurs de commettre ce pêché. Cependant, ces langages de templates ont un coût : ils rendent la réalisation des interfaces utilisateur plus difficile. Faire quelque chose d'aussi simple qu'alterner les couleurs des lignes dans un tableau requiert de faire des "pirouettes" dans de nombreux langages.

Ce que nous devrions faire, c'est accepter que les interfaces utilisateur deviennent de plus en plus compliquées et que nous avons besoin d'un vrai langage de programmation (avec toute sa puissance expressive) pour réaliser des interfaces utilisateur à grande échelle.

React est une bibliothèque qui embrasse cette idée. React encourage toujours la séparation du code : les composants remplissent seulement le rôle de la “vue” dans une application MVC traditionnelle. Cependant, au lieu d'un langage de templates simpliste, vous pourrez utiliser JavaScript pour réaliser des abstractions et réutiliser du code.

Verbosité des exemples par rapport aux frameworks existants

Peu après l'annonce de React, Vlad Yazhbin a publié une version en AngularJS du code du tutoriel de React, démontrant à quel point le code résultant était plus concis que l'original en React. Cependant, certains ont fait remarquer que la comparaison n'était pas tout à fait juste.

Néanmoins, l'effort de Facebook d'ouvrir davantage le code source des bibliothèques qu'il développe est apprécié par la communauté des développeurs. Les précédentes ouvertures de code source de grande envergure de Facebook comprennent le compilateur PHP Hihop, et Tornado, le performant framework web asynchrone en Python prévu pour réaliser des applications temps-réel, créé à l'origine pour alimenter FriendFeed.

React est disponible sur github, et peut être téléchargé dans diverses versions de développement ou de production.

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Contenu Éducatif

Rien ne serait possible sans le soutien et la confiance de nos Sponsors Fondateurs:

AppDynamics   CloudBees   Microsoft   Zenika
Feedback Général
Bugs
Publicité
Éditorial
InfoQ.com et tous les contenus sont copyright © 2006-2014 C4Media Inc. InfoQ.com est hébergé chez Contegix, le meilleur ISP avec lequel nous ayons travaillé.
Politique de confidentialité
BT