Y ese HTML, bueno, puede contener etiquetas de script. Y esas etiquetas de script pueden mover el HTML a su posición y serializar cualquier data y activar la hidratación. Así que todo este trabajo puede ocurrir independientemente de que el framework realmente se haya cargado en la página.
Tomé esta demostración de la página de inicio de Marco, pero funciona de manera muy similar a cómo lo hacemos en Solid. Y para hacer eso, tengo otro ejemplo de código. Pero no realmente otro. Lo que hice en realidad fue usar el metaframework Solid Start, pero esencialmente ahora tenemos HTML en la cabeza y algunas otras cosas, pero lo que verás es casi la misma demostración nuevamente donde tengo un límite de suspense con carga, envolviendo nuestro enrutador, y luego tengo un componente de encabezado y pie de página para demostrar que no estoy inventando esto . Y si voy a nuestras rutas y obtengo nuestra ruta de índice, lo que verás es que el componente se ve muy similar al que acabamos de crear donde tenemos nuestros dos recursos obteniendo las cosas, y un límite de suspense anidado para mostrar exactamente las mismas cosas. Y la razón por la que quiero mostrar esto es que cuando recargas la página, se ve realmente similar a lo que acabamos de hacer. La única diferencia aquí es que ahora la obtención de data ocurre en el servidor. Es exactamente el mismo código, pero funciona directamente en SSR. Y lo interesante aquí, y voy a mostrar esto muy rápido, con suerte, es que obtenemos nuestro HTML de vuelta, ya sabes, tenemos nuestra cabeza y algo de CSS que se carga aquí, pero lo que es realmente interesante aquí es que el cuerpo principal tiene el encabezado y el pie de página, como mostré, y luego realmente ves la carga aquí, y algunos comentarios de marcador de posición y cosas, algunos scripts para comenzar, pero luego cerramos el cuerpo y el HTML, por lo que el documento está listo, pero luego, ¿qué es esto al final? Una plantilla donde tenemos a John Lennon y la carga de publicaciones, por lo que tenemos el siguiente estado de la interfaz de usuario, los data que necesitamos para hidratarlo, que es solo este John Lennon, y esto en realidad es el código aquí, que simplemente mueve las cosas desde la parte inferior del documento e inserta, y luego debajo de eso, bueno, a medida que se completa, obtenemos otra plantilla, y esta tiene nuestro listado de publicaciones, y nuevamente, los data que necesitamos para hidratarlo, por lo que simplemente se va incrementando en la página. Ahora esto es obviamente bastante genial, pero tal vez no quieras mostrar la página hasta que el título aparezca, y hay una manera bastante fácil de hacerlo. Podemos simplemente, para nuestro recurso, agregar defer stream true, y ahora, cuando recargo la página, puedes ver que espera hasta que John Lennon esté allí antes, por lo que tenemos un control completo sobre cuándo comenzamos a transmitir. Podemos, ya sabes, hacer nuestra autenticación primero, asegurarnos de que la persona esté bien, y luego transmitir parte del contenido que puede tardar más en cargarse, pero si te fijas de nuevo, es todo el mismo código que hemos estado usando en el otro ejemplo, ya sea que estés usando SSR, no necesitas componentes del servidor ni ningún tipo de cosas sofisticadas. Esto es solo suspense más recursos. De acuerdo. Los marcadores de carga son útiles, pero a veces pueden ser bruscos, sacando al usuario de la experiencia. Cuando la página se carga inicialmente, no tenemos nada que mostrar, por lo que mostrar un marcador de carga es, ya sabes, una gran indicación, pero en las navegaciones posteriores, ya tenemos contenido para mostrar, la página actual. Entonces, ya mencioné que mantener las cosas en el pasado es un poco más complicado de hacer. No podemos simplemente bloquear una función asíncrona, no podemos simplemente hacer un componente asíncrono y esperar que funcione. Eso se debe a que algún cambio de estado no relacionado o acción del usuario final podría interactuar con la página y podría ver ese estado inconsistente cuando lo esté leyendo. Y no obtendrás el resultado esperado. Un ejemplo perfecto es, supongamos que navegas al siguiente. Tienes un carrusel y navegas a la siguiente página.
¿Dos minutos? ¿De verdad? Oh. De acuerdo, genial. Así que hay una cuenta regresiva de ocho minutos aquí. De acuerdo.
Comments