Comparación del rendimiento de los frameworks de JavaScript utilizando datos del mundo real

Rate this content
Bookmark

Google recopila información de rendimiento de todas las sesiones en navegadores Chrome que hayan optado por participar en su base de datos Chrome User Experience Report (CrUX). Luego utiliza esta información como factor de clasificación para su motor de búsqueda, pero también la pone a disposición del público para que todos la vean. Utilicé estos datos para analizar y comparar el rendimiento de los principales frameworks de JavaScript. En particular, examiné la probabilidad de que los sitios web construidos con cada framework tengan buenos puntajes de Core Web Vitals (CWV). En el camino, me encontré con varios resultados sorprendentes y resolví al menos un misterio. ¡Descubre cómo se clasifica tu framework favorito en comparación con todos los demás!

FAQ

Dan Shapir es el Líder Técnico de Rendimiento en Next Insurance y anfitrión en el podcast JavaScript Jabber. Es experto invitado en el Grupo de Trabajo de Rendimiento Web del W3C y se especializa en el rendimiento de sitios web y aplicaciones web.

El framework juega un papel crucial en la construcción de sitios web porque dicta cómo y cuándo se ejecuta el código, maneja interacciones del usuario y actualiza la visualización, influyendo significativamente en el rendimiento del sitio.

Los dos métodos principales son las pruebas de laboratorio, que miden el rendimiento en un entorno controlado, y los datos en campo, que recopilan información de rendimiento de sesiones reales de usuarios a través de herramientas como la Base de Datos de Experiencia del Usuario de Chrome (CRUX).

CRUX es la Base de Datos de Experiencia del Usuario de Chrome que recoge datos de rendimiento de cada sesión de usuario en Chrome. Google utiliza estos datos para clasificar sitios web en sus resultados de búsqueda y los ofrece públicamente para analizar el rendimiento de las páginas web.

Los Core Web Vitals son métricas esenciales que Google utiliza para evaluar la experiencia del usuario en un sitio web, incluyendo el tiempo de carga del contenido más grande (LCP), el retraso en la primera interacción (FID) y el desplazamiento acumulativo del contenido (CLS). Estas métricas ayudan a determinar si un sitio ofrece una buena experiencia de usuario.

Los datos de CRUX muestran que, aunque algunos frameworks como React y Preact muestran un mejor rendimiento que otros, en general, muchos sitios web construidos con frameworks populares tienen un rendimiento inferior al de la web en general.

Aunque Svelte está diseñado para ser eficiente, los datos pueden reflejar un uso predominante en países con conexiones a internet más lentas o dispositivos móviles menos potentes, afectando negativamente su puntuación de rendimiento global.

Wix utiliza React para mostrar sus sitios web, y dado que representa un porcentaje significativo de todos los sitios web de React, su buen rendimiento puede elevar la puntuación de rendimiento general de React.

Dan Shappir
Dan Shappir
28 min
05 Jun, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La elección del framework afecta el rendimiento del sitio web. Se utilizan pruebas de laboratorio y datos de campo para medir el rendimiento. Los Core Web Vitals son métricas importantes para la evaluación del rendimiento. Están surgiendo nuevos frameworks que priorizan la velocidad. MetaFrameworks como QUIC, SolidStart, Astro y Nuxt muestran promesas en la mejora del rendimiento. Los frameworks de React como Gatsby y Remix tienen un buen rendimiento. Wix tiene un impacto significativo en el rendimiento de React. La elección del framework afecta significativamente la probabilidad de construir un sitio web rápido. Se necesita mejorar el rendimiento del framework.

1. Introducción a la rendimiento web y los frameworks

Short description:

Hola a todos, en esta parte, discutiré cómo la elección del framework afecta el rendimiento de los sitios web y aplicaciones web. Utilizaré datos del mundo real para comparar el impacto en el rendimiento de los principales frameworks de JavaScript y meta-frameworks. Nuestra elección de framework puede tener un gran impacto en el rendimiento del sitio web. Con tantos frameworks y meta-frameworks disponibles, es importante elegir aquel que nos ayude a construir un sitio web rápido. Para determinar el mejor framework, necesitamos medir y compararlos. El primer método para medir el rendimiento son las pruebas de laboratorio.

afecta el rendimiento de los sitios web y aplicaciones web que construimos. Para hacer esto, utilizaré datos del mundo real para comparar el impacto en el rendimiento de los principales frameworks de JavaScript y meta-frameworks.

Pero antes, unas palabras sobre mí. Mi nombre es Dan Shapir, y soy el Líder Técnico de Rendimiento en Next Insurance. Somos un unicornio InsurTech que tiene como objetivo revolucionar la forma en que las pequeñas empresas obtienen seguros. Y como todo se hace en línea, es fundamental que el rendimiento sea lo más rápido posible. También soy anfitrión y panelista en el popular podcast semanal JavaScript Jabber. Soy un experto invitado en el Grupo de Trabajo de Rendimiento Web del W3C, donde se discuten y estandarizan las métricas de rendimiento que describiré hoy. Si quieres contactarme sobre rendimiento web o desarrollo web en general, puedes hacerlo en Twitter o Masterdon.

Hablando de rendimiento web, todos sabemos que construir sitios web rápidos puede ser difícil. Y no solo es difícil para ti o para mí, es difícil para todos. Y esa es la razón por la que, según Google, la mayoría de los sitios web que indexa no tienen un buen rendimiento. Por esta razón, cuando seleccionamos qué herramientas usar para construir sitios web, queremos elegir herramientas que nos preparen para el éxito en cuanto al rendimiento. Ciertamente, no queremos elegir herramientas que nos preparen para el fracaso. Y probablemente la herramienta más importante que elegimos como desarrolladores web, el elemento más impactante en nuestro arsenal, es el framework que usamos. La razón de esto es que cuando construimos un sitio web, es el framework el que está al mando. Nuestro código está en la parte de atrás, diciéndole al framework a dónde ir y esperando que nos lleve allí. Es el framework el que decide dónde y cuándo ejecutar nuestro código, qué parámetros y estado pasar a nuestro código, qué hacer con los valores que nuestro código le proporciona, cuándo actualizar la visualización, cómo manejar las interacciones del usuario, etc. Por lo tanto, no es sorprendente que nuestra elección de framework pueda tener un gran impacto en el rendimiento de los sitios web que construimos con él.

Afortunadamente, en estos días tenemos muchas opciones cuando se trata de decidir qué framework usar. De hecho, parece que se introduce un nuevo framework casi a diario. Y además, una motivación principal para la creación de nuevos frameworks es a menudo el rendimiento web. Su objetivo es permitirnos construir sitios web más rápidos, de manera más fácil y consistente. Además, hay un montón de meta-frameworks implementados sobre estos frameworks. Por ejemplo, si quieres construir sitios web usando React, puedes hacerlo con Next.js o Emix o Gatsby o Astro y otros. Entonces, la pregunta es, ¿qué framework o meta-framework deberíamos elegir? La respuesta a eso es que, con todo lo demás siendo igual, deberíamos preferir usar el framework que tenga más probabilidades de ayudarnos a producir un sitio web rápido. Pero, ¿cómo podemos saber qué framework es ese? La respuesta a eso es que necesitamos medirlos y compararlos. Hay dos métodos principales para medir el rendimiento en la web. El primer método se conoce como pruebas de laboratorio.

2. Medición del rendimiento del sitio web

Short description:

La medición del rendimiento del sitio web se puede realizar mediante pruebas de laboratorio o la recopilación de datos en campo. Las pruebas de laboratorio brindan un control y visibilidad completos, pero pueden ser difíciles de configurar y replicar escenarios. Los datos en campo implican recopilar datos de rendimiento de sesiones reales de usuarios, lo que garantiza mediciones precisas. La base de datos de experiencia del usuario de Chrome (CRUX) de Google recopila datos de rendimiento de sesiones del navegador Chrome y los utiliza como señal de clasificación para los resultados del motor de búsqueda.

Esto significa medir el rendimiento del sitio web en un entorno controlado. Idealmente, debería replicar los entornos en los que los usuarios reales acceden a nuestro sitio web. La principal ventaja de utilizar este método es que proporciona un control total sobre las pruebas y una visibilidad completa de los resultados. Podemos inspeccionar cada aspecto y comportamiento de nuestro código y recrearlo según sea necesario.

Pero las pruebas de laboratorio también son difíciles de realizar porque configurar el entorno de laboratorio puede ser desafiante y determinar exactamente qué escenarios debemos replicar también puede ser difícil. Las pruebas de laboratorio son especialmente problemáticas cuando queremos comparar el rendimiento de los diferentes frameworks porque necesitamos construir las mismas aplicaciones exactas utilizando cada framework que queremos probar. Hay algunas herramientas que pueden ayudarnos a automatizar este proceso, pero aún puede requerir un tiempo y esfuerzo significativos.

El otro enfoque que podemos tomar es utilizar datos en campo. Eso significa recopilar datos de rendimiento de sesiones reales de usuarios, preferiblemente tantas como sea posible. Las mediciones de usuarios aleatorios, o RUM por sus siglas en inglés, consisten en obtener datos de rendimiento de sesiones en vivo y utilizar esos datos para las comparaciones. De esta manera, podemos estar seguros de que lo que medimos realmente refleja lo que nuestros usuarios están experimentando. Pero, ¿cómo podemos acceder a los datos de rendimiento de todas esas sesiones? ¿Es posible instrumentar cada sitio web construido con cualquier framework para que informe los datos de rendimiento de cada sesión y luego recopilar estos datos en algún tipo de base de datos para generar comparaciones?

Obviamente, no podemos hacer algo así. Pero resulta que alguien puede hacerlo, y ese alguien es Google. Eso se debe a que en lugar de instrumentar los sitios web, ellos instrumentaron la plataforma en la que se ejecutan estos sitios web, el propio navegador Chrome. A menos que optes por no hacerlo, el navegador Chrome recopila información de rendimiento sobre cada sesión de cada sitio web que visitas y la envía a la base de datos de Google en la nube. Esta base de datos es la Base de Datos de Experiencia del Usuario de Chrome, o CRUX. Google utiliza toda esta información de rendimiento que recopila como una señal de clasificación para su motor de búsqueda. Eso significa que cuando Google decide cómo ordenar los resultados en la página de resultados del motor de búsqueda, otorga un impulso de clasificación a las páginas que tienen un mejor rendimiento según estos datos.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Una Guía del Comportamiento de Renderizado de React
React Advanced Conference 2022React Advanced Conference 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
React es una biblioteca para "renderizar" UI a partir de componentes, pero muchos usuarios se encuentran confundidos acerca de cómo funciona realmente el renderizado de React. ¿Qué significan términos como "renderizado", "reconciliación", "Fibers", y "committing"? ¿Cuándo ocurren los renderizados? ¿Cómo afecta el Contexto al renderizado, y cómo las bibliotecas como Redux causan actualizaciones? En esta charla, aclararemos la confusión y proporcionaremos una base sólida para entender cuándo, por qué, y cómo React renderiza. Veremos: - Qué es realmente el "renderizado" - Cómo React encola los renderizados y el comportamiento de renderizado estándar - Cómo se utilizan las claves y los tipos de componentes en el renderizado - Técnicas para optimizar el rendimiento del renderizado - Cómo el uso del contexto afecta al comportamiento del renderizado - Cómo las bibliotecas externas se integran en el renderizado de React
Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix es un nuevo marco de trabajo web de los creadores de React Router que te ayuda a construir mejores y más rápidos sitios web a través de una sólida comprensión de los fundamentos de la web. Remix se encarga de las tareas pesadas como la renderización del servidor, la división de código, la precarga y la navegación, y te deja con la parte divertida: ¡construir algo increíble!
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
¿Demasiado JavaScript te está agobiando? Los nuevos marcos que prometen no usar JavaScript parecen interesantes, pero tienes una aplicación React existente que mantener. ¿Qué tal si Qwik React es tu respuesta para un inicio de aplicaciones más rápido y una mejor experiencia de usuario? Qwik React te permite convertir fácilmente tu aplicación React en una colección de islas, que pueden ser renderizadas en el servidor y rehidratadas con retraso, e incluso en algunos casos, se puede omitir la rehidratación por completo. Y todo esto de manera incremental sin una reescritura.
Documentación Full Stack
JSNation 2022JSNation 2022
28 min
Documentación Full Stack
Top Content
Los tutoriales interactivos basados en la web se han convertido en un elemento básico de los frameworks de front end, y es fácil ver por qué: a los desarrolladores les encanta poder probar nuevas herramientas sin el problema de instalar paquetes o clonar repositorios.Pero en la era de los meta-frameworks full stack como Next, Remix y SvelteKit, estos tutoriales solo llegan hasta cierto punto. En esta charla, veremos cómo nosotros, en el equipo de Svelte, estamos utilizando la tecnología web de vanguardia para repensar cómo nos enseñamos mutuamente las herramientas de nuestro oficio.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
¡React 18! ¡Funciones concurrentes! Tal vez ya hayas probado las nuevas APIs como useTransition, o tal vez solo hayas oído hablar de ellas. Pero, ¿sabes cómo React 18 logra las mejoras de rendimiento que trae consigo? En esta charla, echemos un vistazo bajo el capó de las características de rendimiento de React 18: - Cómo React 18 reduce el tiempo que tu página permanece congelada (también conocido como TBT) - Qué sucede exactamente en el hilo principal cuando ejecutas useTransition() - Cuál es la trampa con las mejoras (¡no hay torta gratis!), y por qué Vue.js y Preact se negaron rotundamente a lanzar algo similar
SolidJS: ¿Por qué tanto Suspense?
JSNation 2023JSNation 2023
28 min
SolidJS: ¿Por qué tanto Suspense?
Top Content
Solid captó la atención de la comunidad frontend al popularizar la programación reactiva con su convincente uso de Señales para renderizar sin re-renderizaciones. Los hemos visto adoptados en el último año en todo, desde Preact hasta Angular. Las Señales ofrecen un conjunto poderoso de primitivas que aseguran que tu interfaz de usuario esté sincronizada con tu estado, independientemente de los componentes. Un lenguaje universal para la interfaz de usuario frontend.
Pero, ¿qué pasa con lo Asíncrono? ¿Cómo logramos orquestar la carga y mutación de datos, el renderizado en el servidor y la transmisión? Ryan Carniato, creador de SolidJS, echa un vistazo a una primitiva diferente. Una que a menudo se malinterpreta pero que es igual de poderosa en su uso. Únete a él mientras muestra de qué se trata todo este Suspense.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Featured Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Depuración del Rendimiento de React
React Advanced Conference 2023React Advanced Conference 2023
148 min
Depuración del Rendimiento de React
Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Veía una interacción lenta, probaba una optimización aleatoria, veía que no ayudaba, y seguía probando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Hacía una grabación en Chrome DevTools o React Profiler, la examinaba, intentaba hacer clic en cosas al azar, y luego la cerraba frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos cómo analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, cubriremos el rendimiento de interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Master Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Master Patrones de JavaScript
Workshop
Adrian Hajdin
Adrian Hajdin
Durante este masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debe conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final del masterclass, los participantes ganarán confianza en su capacidad para escribir código JavaScript de alta calidad que perdure en el tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento profesional y las oportunidades de avance en la industria del software