recherche
Maisoninterface Webtutoriel CSSRadeventListener: une histoire de performances du cadre côté client

RadeventListener: une histoire de performance du cadre côté client

La popularité de React n'est pas sans ses détracteurs. La taille considérable du cadre (environ 120 kib a minifié) a un impact significatif sur les temps de démarrage, en particulier lorsqu'il se fier uniquement sur le rendu côté client. Même le rendu côté serveur avec hydratation côté client reste à forte exécution des performances. Alors que React excelle dans la gestion de l'État complexe, ses demandes de ressources l'emportent souvent sur les avantages des applications plus simples. Cela peut exclure efficacement les utilisateurs avec du matériel moins puissant.

Malgré mes réservations sur les frais généraux de performance de React, j'apprécie son modèle de composant et sa syntaxe JSX. Le rendu côté serveur (ou en utilisant Preact, mon alternative préférée) reste un atout précieux. Cependant, la détermination de l'utilisation appropriée côté client reste un défi. Cet article détaille mes résultats sur l'optimisation des performances de réaction pour une meilleure expérience utilisateur.

Le contexte: une application RSS Feed

Mon application RSS Feed, bylines.fyi , utilise JavaScript sur le serveur et le client. Bien que je n'aime pas intrinsèquement les cadres côté client, mon expérience met en évidence deux problèmes récurrents:

  1. Les cadres peuvent obscurcir la plate-forme Web sous-jacente, entravant une compréhension approfondie du moment où elles sont vraiment bénéfiques.
  2. Les cadres ne garantissent pas toujours des expériences d'utilisateurs optimales.

La recherche Httparchive de Tim Kadlec sur les performances du cadre Web renforce ces préoccupations, révélant les performances moins que stellaires de React. Mon objectif était de tirer parti des avantages côté serveur de React tout en atténuant ses inconvénients côté client.

L'expérience: bascule de navigation mobile

Mon application RSS avait besoin de JavaScript côté client pour une simple bascule de navigation mobile - un exemple classique de «l'état simple». Je vois souvent des composants React surutilisés pour des tâches aussi simples, conduisant à des frais généraux inutiles. Cette expérience, bien qu'apparemment triviale, sert de référence cruciale pour comprendre comment les choix de cadre évoluent. Il est important de noter que la plupart des développeurs ne compteraient pas uniquement sur React pour une fonctionnalité aussi mineure, mais les résultats illustrent les implications architecturales pour les performances d'exécution.

Conditions de test

L'expérience a comparé trois implémentations de navigation mobile sur quatre appareils:

  1. Composant React Stateful: Server rendu et hydraté du client.
  2. Composant préalable avec état: le serveur rendu et hydraté du client.
  3. Composant de préact sans état: serveur rendu, non hydraté; en utilisant des auditeurs d'événements standard.

Appareils inclus:

  1. Téléphone Android Nokia 2 (Chrome 83)
  2. Ordinateur portable ASUS X550CC (Windows 10, Chrome 83)
  3. IPhone de 1ère génération (Safari 13)
  4. IPhone SE de 2e génération (Safari 13)

Métrique

Les mesures suivantes ont été mesurées pour chaque implémentation et appareil:

  1. Temps de démarrage: y compris le chargement et l'hydratation du cadre (React / Preact), ou simplement le code d'écoute d'événements (EventListener).
  2. Temps d'hydratation: sous-ensemble du temps de démarrage (réact / préact uniquement).
  3. Mobile Nav Temps d'ouverture: Mesurer les frais généraux du cadre dans la gestion des événements.

Méthodologie

Les tests impliquaient le débogage et le profilage à distance, enregistrant le temps de processeur pour chaque métrique sur dix itérations par scénario et par appareil. Les performances du réseau n'étaient pas un facteur.

Résultats

En raison de la complexité des données, les résultats sont présentés au format tabulaire montrant les temps de processeur minimum, maximum, médian et moyen. (Des tables détaillées sont disponibles dans la feuille de calcul qui l'accompagne). Les principales conclusions comprennent:

  • Les coûts élevés de startup et d'hydratation de React: particulièrement visible sur le Nokia 2 bas de gamme.
  • Les performances améliorées de Preact: nettement plus rapidement que réagi, mais dépassant toujours les budgets de trame idéaux sur le Nokia 2.
  • Performance supérieure de l'écouteur d'événements: toujours plus rapidement que la réaction et le préact, en particulier pour les interactions simples.

Discussion: piles d'appels superficiels

Les différences de performance découlent des frais généraux de la charge et de l'hydratation du cadre. Alors que certains compromis de performance sont inévitables pour la commodité des développeurs, l'équilibre s'incline souvent trop pour l'expérience des développeurs au détriment de l'utilisateur. Les piles d'appels pour l'hydratation React et Preact mettent en évidence les demandes de traitement significatives, en particulier pour les tâches simples. L'utilisation des auditeurs d'événements natives offre une approche beaucoup plus efficace pour la gestion simple de l'État.

Conclusion et recommandations

Cette analyse n'est pas conçue comme une critique de réaction, mais plutôt comme des encouragements pour évaluer de manière critique les choix de cadre et leur impact sur les performances. Plusieurs stratégies peuvent atténuer les problèmes de performance:

  1. Refactor Composants avec état des composants apatrides dans la mesure du possible.
  2. Évitez JavaScript et l'hydratation côté client pour les composants apatrides.
  3. Utilisez des écouteurs d'événements indépendants du cadre pour des interactions simples.
  4. Hydrater paresseusement les composants à l'aide d'observateurs d'intersection ou requestIdleCallback .
  5. Considérez le préact comme une alternative plus rapide à réagir.
  6. Adaptez l'expérience utilisateur pour les appareils basse mémoire à l'aide de navigator.deviceMemory .

Prioriser les tests de performances sur une gamme d'appareils, en assurant l'inclusivité pour les utilisateurs avec des capacités matérielles variables. L'objectif devrait être une expérience Web rapide et accessible pour tout le monde.

Un merci spécial à Eric Bailey pour les commentaires éditoriaux et le personnel de CSS-Tricks pour avoir publié cet article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Qu'est-ce que CSS Grid?Qu'est-ce que CSS Grid?Apr 30, 2025 pm 03:21 PM

CSS Grid est un outil puissant pour créer des dispositions Web complexes et réactives. Il simplifie la conception, améliore l'accessibilité et offre plus de contrôle que les méthodes plus anciennes.

Qu'est-ce que CSS Flexbox?Qu'est-ce que CSS Flexbox?Apr 30, 2025 pm 03:20 PM

L'article traite de CSS Flexbox, une méthode de mise en page pour l'alignement et la distribution efficaces de l'espace dans les conceptions réactives. Il explique l'utilisation de Flexbox, la compare à la grille CSS et détaille la prise en charge du navigateur.

Comment pouvons-nous rendre notre site Web réactif à l'aide de CSS?Comment pouvons-nous rendre notre site Web réactif à l'aide de CSS?Apr 30, 2025 pm 03:19 PM

L'article traite des techniques de création de sites Web réactifs à l'aide de CSS, y compris des balises de méta de la fenêtre, des grilles flexibles, des médias fluides, des requêtes multimédias et des unités relatives. Il couvre également l'utilisation de la grille CSS et de Flexbox ensemble et recommande le cadre CSS

Que fait la propriété CSS Box-Sizizing?Que fait la propriété CSS Box-Sizizing?Apr 30, 2025 pm 03:18 PM

L'article traite de la propriété CSS-Box-Sizing, qui contrôle comment les dimensions des éléments sont calculées. Il explique des valeurs telles que la boîte de contenu, la boîte de bordure et la boîte de padding, et leur impact sur la conception de la disposition et l'alignement de la forme.

Comment pouvons-nous animer à l'aide de CSS?Comment pouvons-nous animer à l'aide de CSS?Apr 30, 2025 pm 03:17 PM

L'article discute de la création d'animations à l'aide de CSS, de propriétés clés et de combinaison avec JavaScript. Le principal problème est la compatibilité du navigateur.

Pouvons-nous ajouter des transformations 3D à notre projet en utilisant CSS?Pouvons-nous ajouter des transformations 3D à notre projet en utilisant CSS?Apr 30, 2025 pm 03:16 PM

L'article discute de l'utilisation de CSS pour les transformations 3D, les propriétés clés, la compatibilité du navigateur et les considérations de performances pour les projets Web. (Compte de caractère: 159)

Comment pouvons-nous ajouter des gradients dans CSS?Comment pouvons-nous ajouter des gradients dans CSS?Apr 30, 2025 pm 03:15 PM

L'article discute de l'utilisation des gradients CSS (linéaire, radial, répétant) pour améliorer les visuels du site Web, l'ajout de profondeur, de concentration et d'esthétique moderne.

Que sont les pseudo-éléments dans CSS?Que sont les pseudo-éléments dans CSS?Apr 30, 2025 pm 03:14 PM

L'article traite des pseudo-éléments dans CSS, de leur utilisation dans l'amélioration du style HTML et des différences par rapport aux pseudo-classes. Fournit des exemples pratiques.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.