Y la razón de este aumento es porque las aplicaciones de hoy son mucho más interactivas, mucho más ricas que hace 10, 20 años, y por lo tanto, esperaríamos que esta tendencia particular continúe.
Ahora, no es sorprendente, he seleccionado un par de frameworks a la izquierda y te muestro cuál es su rendimiento promedio que Google ve en el sitio web. Y en el lado derecho, te estoy mostrando cuánto código estos frameworks están enviando al cliente. Y observa que los frameworks que mejor se desempeñan en términos de Lighthouse core también envían la menor cantidad de código. De nuevo, esto no debería ser sorprendente porque básicamente te dice que, hey, cuanto menos código envíes, más fácil será para el navegador interpretarlo, ejecutarlo y hacer el sitio web interactivo.
Ahora, el problema es que necesitamos enviar código. Necesitamos enviar código para hacer la aplicación interactiva, y por lo tanto, hacemos esto a través de este proceso llamado hidratación. Y la forma en que funciona la hidratación es que comienza con HTML, que esencialmente es una página en blanco primero. Y hablaremos sobre la renderización del lado del servidor en un segundo. El JavaScript se carga, el JavaScript luego se ejecuta, luego causa una renderización, y en este punto, realmente tienes un sitio web interactivo real. Y es en este punto donde puedes ir y hacer clic en él y realizar operaciones.
Ahora, el problema es que tenemos esta página en blanco al principio, y por lo tanto, la gente comenzó a hacer pre-renderización del lado del servidor. Y así, con la pre-renderización del lado del servidor, o SSR, o SSG, terminas con HTML, y el HTML ahora tiene una imagen que puedes ver, pero realmente no puedes interactuar con ella, ¿verdad? Y entonces hay una apariencia de ser más rápido porque la página realmente aparece más rápido para el usuario, y eso proporciona una mejor experiencia de usuario. Pero todavía tiene que descargar todo el JavaScript, todavía tiene que ejecutar toda la aplicación, y todavía tiene que renderizar la aplicación, excepto que ahora no llamamos a eso renderización. En cambio, lo llamamos reconciliación, porque estamos tratando de reutilizar tantos elementos DOM como sea posible dentro de la UI. Y por lo tanto, solo en este punto la aplicación se vuelve interactiva. Y observa lo que realmente está sucediendo, es que la interactividad es en realidad más lenta, si no hubieras dicho contenido al principio en absoluto. Y por lo tanto, es un poco de dicotomía que parecemos más rápidos, pero en realidad somos más lentos. Y la razón de eso es porque en realidad estamos enviando más información, estamos enviando duplicado cantidades de información. Si lo piensas, si tomas una cadena, como visualmente construida en tu pila tecnológica que ves en la imagen, esa cadena en realidad aparece dos veces. Una vez en HTML y una vez en JavaScript. Y por lo tanto, esta duplicación en realidad significa que tienes que enviar más cosas al cliente, el cliente tiene que procesar más cosas. Y el resultado final es que hay... que se tarda más tiempo en que la aplicación se despierte. Ahora, la hidratación, si lo piensas, lo que es, es que comienzas en un componente raíz. Y a medida que este nuevo componente raíz se procesa y se ejecuta, la hidratación aprende, el marco aprende sobre otros componentes, en este caso, estos tres. Y por lo tanto, va recursivamente y ejecuta estos componentes y aprende sobre más componentes. Y a medida que lo hace, aprende sobre los oyentes. Y son los oyentes los que realmente nos importan. Los oyentes, el estado y los límites de los componentes es la información que necesitamos para hacer la aplicación interactiva.
Comments