Voici les chiffres
- min + gzip 26k
- gzip 90k
- original 450 + k
Et React n'a pas beaucoup de fonctionnalités dans sa documentation. Pourquoi est-ce si grand?
J'ai le sentiment que c'est l'implémentation d'un DOM léger. Mais je veux être sûr.
Voici les chiffres
Et React n'a pas beaucoup de fonctionnalités dans sa documentation. Pourquoi est-ce si grand?
J'ai le sentiment que c'est l'implémentation d'un DOM léger. Mais je veux être sûr.
Réponses:
React en fait pas mal! La partie la plus non évidente de React est probablement le système d'événements - non seulement React implémente sa propre répartition et diffusion d'événements, mais il normalise les événements communs entre les navigateurs afin que vous n'ayez pas à vous en soucier autant. Par exemple, SelectEventPlugin est un "plugin" d'événement intégré qui fournit un onSelect
événement qui se comporte de la même manière dans tous les navigateurs.
L' implémentation du DOM virtuel prend également une quantité décente de code; beaucoup d'efforts sont consacrés à l'optimisation des performances, c'est pourquoi la version non réduite inclut ReactPerf , qui est un outil de mesure des performances de rendu. Lors de la mise à jour du DOM, React fait également des choses pratiques pour vous, comme le maintien de toute sélection d'entrée et le maintien de la position de défilement actuelle.
React a également quelques autres astuces dans sa manche. L'un des plus intéressants est qu'il prend entièrement en charge le rendu d'un composant dans une chaîne HTML même si vous n'avez pas d'environnement de navigateur, vous pouvez donc envoyer une page qui fonctionne même avant le chargement de JS.
À quoi comparez-vous React? react-15.0.2.min.js
est 43k (gzipped)
, mais jQuery est 33k tandis que ember-2.6.0.prod.js
est 363k (also gzipped)
. De toute évidence, ces cadres ne font pas exactement les mêmes choses, mais ils se chevauchent beaucoup, donc je pense que la comparaison est raisonnable.
Si vous vous inquiétez de la taille du téléchargement, je ne m'inquiéterais pas trop de la contribution du code JS à cela. Voici une annonce que je vois sur le côté droit de ma page Stack Overflow en ce moment:
Sa taille de téléchargement est de 95k - je ne réfléchirais pas à deux fois avant d'inclure une image comme celle-ci dans une page car (même si je m'inquiétais des performances), il y a généralement tellement d'autres choses liées aux performances à corriger qui sont plus lucratives.
En bref, je ne pense pas que React soit si grand, et sa taille vient des nombreuses petites choses qu'il fait pour vous aider. Vous citez la petite API de React comme une raison pour laquelle le code de React devrait être petit, mais une meilleure question pourrait être: "Comment l'API de React peut-elle être si simple étant donné tout ce qu'elle fait pour vous?"
… Mais c'est une question totalement distincte. :) J'espère avoir répondu à votre question - heureux de développer si je ne l'ai pas fait.
Quelques réflexions ... J'avais certaines des mêmes préoccupations avec sa taille, mais après l'avoir utilisé, pas de blague, je l'utiliserais si elle faisait 5 Mo. C'est tellement bon. Cela dit, j'ai décidé de réduire autant que possible les dépendances sur d'autres bibliothèques. J'utilisais jquery pour deux choses .. ajax et la réponse ajax automatique et la gestion des demandes (beforeSend, etc.) qui géreraient quand un jeton était dans une réponse après la connexion, puis m'assurer que chaque demande ajax l'ajoutait à l'en-tête d'autorisation avant Envoi en cours. J'ai remplacé cela par un très petit morceau de javascript natif. Fonctionne très bien. Aussi, j'essayais d'utiliser _underscore. Je l'ai remplacé par du lodash, qui est plus petit et plus rapide, bien que je ne l'utilise pas actuellement, donc je peux le supprimer complètement.
Voici un article, parmi beaucoup d'autres sur google, que j'ai trouvé et qui propose des alternatives utilisant JS natif sur jquery.
http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/