No sabes cómo hacer SSR

Rate this content
Bookmark

Un recorrido por la evolución del SSR en los últimos doce años. Cubriremos cómo han cambiado las técnicas, los problemas típicos, las herramientas que puedes utilizar y diversas soluciones, todo desde el punto de vista de mi experiencia personal como consumidor y mantenedor.

This talk has been presented at DevOps.js Conf 2024, check out the latest edition of this JavaScript Conference.

FAQ

Emanuele Stoppo es un colaborador principal del proyecto Biome y miembro del equipo de plataforma del proyecto Aster. Su viaje personal en SSR comenzó con su primera experiencia en programación usando PHP y el marco de trabajo MVC Codingigniter.

SSR, o renderizado en el lado del servidor, es un método donde un servidor genera el HTML completo de una página y lo envía al cliente. Originalmente, todos los sitios web se creaban mediante SSR, pero con el tiempo y la llegada de nuevas tecnologías, como Node.js, los patrones y herramientas han evolucionado.

Emanuele utilizó SSR durante su primera experiencia profesional con PHP y Codingigniter, y más adelante en su carrera, implementó animaciones en el cliente usando jQuery con SSR. Además, creó su propio marco de SSR para integrar React con un CMS basado en .NET debido a restricciones en un proyecto empresarial.

Next.js es un marco de trabajo moderno que facilita el desarrollo de aplicaciones web con React. Emanuele trabajó con Next.js en un contexto donde el backend utilizaba lambdas, y tuvo que construir su propia capa de implementación para adaptar Next.js a este entorno serverless.

Astro es una plataforma en la que Emanuele Stoppo ha trabajado, que utiliza SSR de manera intensiva. En Astro, SSR se ejecuta generando páginas como archivos de artefacto que luego son gestionados de manera flexible por adaptadores específicos para diferentes plataformas.

En su proyecto empresarial, Emanuele quería utilizar React pero se enfrentó a restricciones debido al uso de un CMS basado en .NET, similar a WordPress. Esto lo llevó a desarrollar su propio marco de SSR para integrar React de manera efectiva dentro de las limitaciones del proyecto.

Emanuele Stoppa
Emanuele Stoppa
23 min
15 Feb, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla cubre el viaje personal del orador hacia el renderizado del lado del servidor (SSR) y la evolución de los frameworks de desarrollo web. Explora el uso de jQuery para animaciones en SSR, los desafíos enfrentados al integrar React con Umbraco y la creación de un framework SSR personalizado. La charla también discute los beneficios de Next.js y el uso de artefactos sin servidor para la implementación. Por último, destaca las características de Astro, incluida su capacidad de función por ruta.
Available in English: You Don’t Know How to SSR

1. Introducción a SSR y Mi Viaje Personal

Short description:

Hoy les hablaré sobre SSR y mi viaje personal en SSR. Primero, vamos a sumergirnos en ello. Mi nombre es Emanuele Stoppo, soy italiano y vivo en Irlanda. Soy un colaborador principal del proyecto Biome y pertenezco al equipo de plataforma del proyecto Aster. Comenzaremos nuestro viaje hablando sobre este marco de codificación, que es básicamente mi primera experiencia con SSR. Y terminaremos nuestro viaje con Astro. Ahora, ¿qué es el renderizado en el lado del servidor? Es cuando un servidor te proporciona HTML y renderizas una página en tu servidor. Comencemos con mi primera experiencia en 2010 como desarrollador de PHP trabajando con Codingigniter, un marco basado en MVC.

¡Hola a todos! Hoy les hablaré sobre SSR y mi viaje personal en SSR. Vamos a sumergirnos en ello. Primero, las presentaciones en orden. Mi nombre es Emanuele Stoppo, soy italiano, como podrán entender por mi acento, y vivo en Irlanda. Soy un colaborador principal del proyecto Biome y pertenezco al equipo de plataforma del proyecto Aster. También soy un ávido jugador de consola.

Para cuando este video se publique, probablemente estaré jugando Final Fantasy 7. Ahora, comenzaremos nuestro viaje hablando sobre este marco de codificación, que es básicamente mi primera experiencia con SSR. Y terminaremos nuestro viaje con Astro. Ahí es donde las cosas se pondrán interesantes. Ya verán por qué.

Primero que nada, ¿qué es el renderizado en el lado del servidor? La cosa es que ha cambiado a lo largo de los años. Cuando comencé, el renderizado en el lado del servidor era la forma en que se creaban los sitios web. Así es como se hacían. Pero luego llegó Node.js, nuevos patrones, nuevas posibilidades, nuevas herramientas, y así sucesivamente. Las cosas cambiaron, nuevos patrones, y demás. Básicamente, es cuando un servidor te proporciona HTML y tú se lo das a tu cliente. Así que renderizas una página en tu servidor y eso es todo. Muy básico, ¿verdad? Ahora entendemos qué es SSR.

Comencemos con mi primera experiencia. Fue en 2010, justo después de salir de la universidad. PHP fue mi primera experiencia. Era un desarrollador de PHP. Tuve la oportunidad de trabajar con Codingigniter, que es un marco basado en MVC, que significa Modelo-Vista-Controlador. Solo para darles una idea de qué es este patrón. Básicamente, tienes tu propia clase, que es el controlador que tiene toda la lógica de negocio de tu página. Luego tienes el modelo. El modelo es generalmente esa entidad que se encarga de todo lo relacionado con tus datos.

2. Operaciones CRUD, Lenguajes de Plantillas y jQuery

Short description:

Entonces, las operaciones CRUD. Validaciones y demás. Se conecta con la base de datos y se comunica con la base de datos. Luego, tienes la vista. Puedes tener múltiples vistas o reutilizar todas las vistas. La vista suele ser un lenguaje de plantillas. jQuery llegó como una revolución. Es cómo aprendí JavaScript. Aquí tienes un ejemplo de cómo lo usé con SSR. Teníamos requisitos para animaciones sin salir de la página del usuario. Así que creamos un nuevo punto final con un modelo de controlador vista y mostramos solo el HTML deseado.

Entonces, las operaciones CRUD. Validaciones y demás. Se conecta con la base de datos y se comunica con la base de datos. Y luego tienes la vista. Entonces, la vista generalmente, la llamas dentro de tu controlador. También puedes tener múltiples vistas o reutilizar todas las vistas. Y la vista, generalmente es un lenguaje de plantillas. Este es un ejemplo de un lenguaje de plantillas. Si usas, por ejemplo, Vue y Svelte, ya sabes qué es un lenguaje de plantillas. Y así es como solía hacerlo en aquel entonces. No ha cambiado mucho. Como con Vue y Svelte, tienen una sintaxis diferente. Pero, quiero decir, el concepto. Es el mismo. Interpolamos el lenguaje de plantillas con las variables. Generamos HTML y se lo damos al navegador. Eso es lo que hice al principio. Así es como empecé.

Y luego llegó jQuery. jQuery fue una revolución en ese momento. Es cómo aprendí JavaScript. Y aquí tienes un ejemplo de cómo lo usé con SSR. Así que tenía mi jQuery. Y había otro marco de MVC que se llama Grails. Grails se basa en este lenguaje llamado Groovy. Se compila en JVM. Como dije, sigue siendo un MVC. Y lo que hice fue básicamente que teníamos algunos requisitos donde queríamos tener algunas animaciones sin salir de la página del usuario. Entonces, lo que solías hacer en ese momento era crear un nuevo punto final con un modelo de controlador vista. Específicamente, para estas necesidades, generabas solo el HTML que deseabas tener.

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

Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
El Nuevo Router de Aplicaciones Next.js
React Summit 2023React Summit 2023
27 min
El Nuevo Router de Aplicaciones Next.js
Top Content
Today's Talk is about the Next.js App Router, which has evolved over the years and is now a core feature of Next.js. The Talk covers topics such as adding components, fetching remote data, and exploring layouts. It also discusses submitting form data, simplifying code, and reusing components. The App Router allows for coexistence with the existing pages router and enables data fetching at the layout level using React Server Components.
Diseño Opt-in – La Nueva Era de los Marcos de React
React Advanced 2023React Advanced 2023
23 min
Diseño Opt-in – La Nueva Era de los Marcos de React
This Talk discusses opt-in design in web development, focusing on API design and understanding good defaults. Opt-in design allows developers to start with minimal tools and gradually add complexity as needed. The principles of opt-in design include finding the lowest common denominator, making complexity easy to add, and prioritizing the user experience. The Talk also explores the concept of opt-in design in React and Astro, as well as the comparison between React and Solid frameworks. Server rendering and streaming in React are highlighted, along with the importance of suspense boundaries for a better user experience.
Todo Sobre Astro
React Day Berlin 2023React Day Berlin 2023
28 min
Todo Sobre Astro
Astro is a powerful framework for content-driven websites, with its own syntax and the ability to use favorite front-end libraries. It has seen significant improvements in Astro 2 and Astro 3, including view transitions and improved performance. Astro 4 introduces features like a powerful dev toolbar, content caching, and internationalization support. The Astro community is highly regarded, and Astro is being used for production websites. Astro also supports migrating legacy websites and integrating with headless CMSs.
AWS Lambda bajo el capó
Node Congress 2023Node Congress 2023
22 min
AWS Lambda bajo el capó
Top Content
In this Talk, key characteristics of AWS Lambda functions are covered, including service architecture, composition, and optimization of Node.js code. The two operational models of Lambda, asynchronous and synchronous invocation, are explained, highlighting the scalability and availability of the service. The features of Lambda functions, such as retries and event source mapping, are discussed, along with the micro VM lifecycle and the three stages of a Lambda function. Code optimization techniques, including reducing bundle size and using caching options, are explained, and tools like webpack and Lambda Power Tuning are recommended for optimization. Overall, Lambda is a powerful service for handling scalability and traffic spikes while enabling developers to focus on business logic.

Workshops on related topic

IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
WorkshopFree
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
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
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
React Summit 2023React Summit 2023
139 min
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
Top Content
WorkshopFree
Matteo Frana
Matteo Frana
- React Bricks: por qué lo construimos, qué es y cómo funciona- Crea una cuenta gratuita- Crea un nuevo proyecto con Next.js y Tailwind- Explora la estructura del directorio- Anatomía de un Brick- Crea un nuevo Brick (Texto-Imagen)- Añade un título y descripción con edición visual RichText- Añade una imagen con edición visual- Añade controles de barra lateral para editar props (relleno y lado de la imagen)- Anidación de Bricks utilizando el componente Repeater- Crea un brick de galería de imágenes- Publica en Netlify o Vercel- Tipos de página y campos personalizados- Acceso a los valores meta de la página- Internacionalización- Cómo reutilizar contenido en varias páginas: Historias y incrustaciones- Cómo crear un comercio electrónico con datos de productos de una base de datos externa y páginas de aterrizaje creadas visualmente en React Bricks- Características empresariales avanzadas: permisos flexibles, estructura bloqueada, componentes visuales personalizados
De Todo App a B2B SaaS con Next.js y Clerk
React Summit US 2023React Summit US 2023
153 min
De Todo App a B2B SaaS con Next.js y Clerk
Top Content
WorkshopFree
Dev Agrawal
Dev Agrawal
Si eres como yo, probablemente tengas un millón de ideas para proyectos secundarios, algunas de las cuales incluso podrían hacerte ganar dinero como un micro SaaS, o podrían resultar ser la próxima startup de mil millones de dólares. Pero, ¿cómo sabes cuáles? ¿Cómo pasas de una idea a un producto funcional que puede ser puesto en manos de clientes que pagan sin renunciar a tu trabajo e invirtiendo todo tu tiempo y dinero en ello? ¿Cómo pueden competir tus proyectos secundarios en solitario con las aplicaciones construidas por enormes equipos y grandes empresas?
Construir productos SaaS ricos viene con desafíos técnicos como infraestructura, escalabilidad, disponibilidad, seguridad y subsistemas complicados como autenticación y pagos. Por eso, a menudo son los gigantes tecnológicos ya establecidos quienes pueden construir y operar productos de este tipo de manera razonable. Sin embargo, una nueva generación de devtools está permitiendo a los desarrolladores construir fácilmente soluciones completas que aprovechan la mejor infraestructura en la nube disponible, y ofrecen una experiencia que te permite iterar rápidamente en tus ideas por un bajo costo de $0. Se llevan todos los desafíos técnicos de construir y operar productos de software para que solo tengas que pasar tu tiempo construyendo las características que tus usuarios quieren, dándote una oportunidad razonable de competir contra el mercado al mantenerte increíblemente ágil y receptivo a las necesidades de los usuarios.
En esta masterclass de 3 horas comenzarás con una simple aplicación de gestión de tareas construida con React y Next.js y la convertirás en un producto SaaS completamente funcional y escalable integrando una base de datos escalable (PlanetScale), autenticación multi-tenant (Clerk), y pagos basados en suscripción (Stripe). También aprenderás cómo los principios del desarrollo de software ágil y el diseño impulsado por el dominio pueden ayudarte a construir productos rápidamente y de manera rentable, y competir con las soluciones existentes.