Aquí tenemos el estudio de Sanity de un minorista de dulces en línea ficticio. Ahora, tu estudio podría verse algo diferente al nuestro, pero este es el que hemos modelado con páginas, artículos, pero lo más importante, echemos un vistazo a los banners.
Ahora, estos son los banners que vamos a mostrar a los visitantes a medida que llegan a la página, y va a depender de en qué país se encuentren. Estoy en el Reino Unido, así que quiero asegurarme de que vean este contenido aquí. Primero, tenemos un menú desplegable aquí, que se llena con una lista de países que viene de un paquete npm, y este es el beneficio del contenido estructurado en archivos de JavaScript, ya que te permite hacer esquemas casi infinitamente configurables.
Luego tenemos un campo de cadena aquí para el título, un campo de texto para el contenido, y un campo de imagen donde hemos traído una encantadora imagen del Reino Unido aquí de una fuente de activos de Unsplash. Así que ese es el banner que queremos servir a los visitantes, y echemos un vistazo a cómo va a lucir. Ya he visitado esta página antes, así que no me envían ese banner, pero si entro en una nueva ventana de incógnito, aquí me sirven ese banner porque es donde estoy. Entonces, ¿cómo funciona esto? Vamos a sumergirnos en algo de código.
Vamos a echar un vistazo muy rápido a esto. Los conceptos aquí son bastante sencillos, y quizás podamos hacer que este código esté disponible también. Pero aquí está el componente de banner que estamos viendo. Así que puedes ver en la parte superior, el get banner URL aquí va a dispararse a la ruta api. Las rutas API son una forma de ejecutar lógica del lado del servidor en un sitio web de Next.js. Pero nuevamente, la mayoría de las tecnologías JAMstack tienen conceptos similares sobre la ejecución de funciones sin servidor para modificar páginas. Y he incorporado un respaldo aquí que durante el desarrollo, simplemente puedo establecer el país en una cadena de consulta, o de lo contrario, si estoy en producción, ir y golpear esa ruta API de get banner directamente.
Ahora, un componente de banner aquí va a configurar algún estado, y también va a rastrear usando este hook de estado pegajoso, que todo lo que hace es asegurarse de que registremos alguna información en el almacenamiento local. Y vamos a almacenar la fecha de cuando vi este banner. Y sería posible extender este componente para decir, si no he visto este banner durante, digamos, 24 horas, podría servirse nuevamente. Así que lo que vamos a hacer aquí cuando el componente se monte es primero obtener esta URL del banner. Y si el estado no es correcto, vamos a establecer que el banner ha sido visto o si está vacío por cualquier razón, no queremos hacer eso. Pero si la información del banner se devuelve correctamente, entonces queremos establecer eso en el componente y luego establecer que el banner ha sido visto. Y si no tenemos ningún dato porque hemos visto esto antes o la obtención falló y no devolvió datos, entonces este componente no hace nada. Sin embargo, si obtenemos datos del banner, entonces tenemos algo de frame of motion y algo de tailwind para estilizar ese componente que se carga en la vista allí con una agradable animación y estilo. Así que echemos un vistazo a nuestra ruta API. Así que a medida que la solicitud llega a esta ruta API, va a verificar primero, qué información del país tenemos. Primero, va a verificar, ¿lo anulamos manualmente? Quizás habría casos de uso para establecer manualmente el país aquí. De lo contrario, podemos verificar los encabezados en ciertos planes. En Vercel, obtienes información sobre el país basada en la IP. También hay paquetes NPM que te permiten hacer eso. Y muchos otros proveedores enviarán esa información con las solicitudes, como dónde está el usuario.
Comments