Hola a todos, soy Gil. Soy un arquitecto de rendimiento en Wix, y hoy quiero guiarte a través de cómo usamos varias técnicas de división de código para mejorar el rendimiento de los sitios web de Wix. La división de código nos permite descomponer JavaScript en fragmentos más pequeños o en React en múltiples componentes, y cargarlos solo cuando sea necesario, asegurando que los usuarios descarguen solo el código que necesitan. Al aplicar estas técnicas, reducimos significativamente el JavaScript enviado al lado del cliente, llevando a una gran mejora en la experiencia del usuario.
Como mencioné, soy un arquitecto de rendimiento en Wix, lo que significa que mi enfoque está en mejorar el rendimiento de millones de sitios web de Wix. Dado que usamos y dependemos mucho de React, una parte significativa de mi trabajo implica depurar el rendimiento de las aplicaciones de React, porque esencialmente cada sitio web de Wix es una aplicación de React. Dada la amplia gama de características que ofrecen los sitios web de Wix, la división de código es absolutamente esencial para nosotros. Las técnicas que estoy a punto de compartir han tenido un gran impacto. Pero antes de profundizar en los métodos específicos de división de código, me gustaría explicar cómo medimos el rendimiento en Wix. En producción, medimos el rendimiento usando Core Web Vitals, un conjunto de métricas desarrolladas por Google para evaluar el rendimiento de sitios web en vivo. Específicamente para la carga de JavaScript, nos enfocamos en INP, que significa interacción al siguiente renderizado, que evalúa la interactividad del sitio web. En el gráfico, puedes ver las puntuaciones INP para Wix y nuestros competidores reportadas por Google. Dado que la interactividad está estrechamente ligada a la carga de JavaScript, reducir la cantidad de JavaScript mejora significativamente el INP. Cuando un sitio web carga más JavaScript, el hilo principal se ocupa más con el análisis y la ejecución de código. Esto lleva a un retraso en los eventos desencadenados por el usuario, como, por ejemplo, clics y desplazamientos, lo que a su vez afecta negativamente la interactividad y el INP. Así que como puedes ver en el gráfico, mejoramos significativamente nuestras puntuaciones INP, pasando de una muy baja puntuación a lograr una de las mejores puntuaciones INP en comparación con nuestros competidores. Esta mejora se debe en gran medida a las técnicas de división de código que estoy a punto de compartir contigo hoy.
Ahora, vamos a profundizar en las diversas estrategias de división de código que usamos para minimizar la descarga de JavaScript en nuestras aplicaciones de React. La primera es la importación dinámica, y hay algunas maneras en que usamos importaciones dinámicas en nuestra aplicación de React. Así que la forma más básica en que usamos importaciones dinámicas es cargando componentes de React dinámicamente después de la interacción con React Lazy. Veamos un ejemplo de código corto y básico para esto. Así que como puedes ver, estamos usando importaciones dinámicas, y estamos usando React Lazy. Y esto es, por supuesto, para no agrupar, en este caso, el componente collapse en el paquete principal porque queremos cargarlo solo después de que el usuario haya abierto algún otro componente. Así que estamos usando React State para manejar el estado si debemos mostrar el componente o no. Y luego, basado en el estado, renderizamos el componente, el componente Lazy con suspense, y solo entonces, solo cuando el componente se renderiza, React cargará e hidratará el componente porque estamos usando React Lazy. Así que suspense tiene un fallback, y es importante porque el componente no se muestra hasta que está cargado. Así que necesitamos un fallback para eso. Pero luego React renderizará el componente. Así que un ejemplo muy básico. Estoy seguro de que muchos de ustedes ya conocen esto.
Comments