Implementación de Server Side Rendering en NodeJS
Clase 29 de 38 • Curso de Optimización Web
Contenido del curso
- 7

Entendiendo el Critical Rendering Path en Navegadores Web
11:11 - 8

Optimización de JavaScript para mejorar rendimiento web
10:53 - 9

Priorización de recursos CSS para mejorar rendimiento web
11:50 - 10

Optimización de Carga de Recursos con Preload, Prefetch y Preconnect
10:36 - 11

Optimización de Animaciones CSS para Mejorar el Renderizado
02:35
- 15

Optimización de Imágenes para Web: Formatos y Herramientas Efectivas
15:32 - 16

Optimización de Imágenes para Web: Uso de Tamaños y Formatos Adecuados
05:21 - 17

Comparación entre WebFonts y SVG: Ventajas y Desventajas
08:58 - 18

Lazy Loading de Imágenes: Técnicas y Estrategias Efectivas
10:14 - 19

Carga Adaptativa de Imágenes con Gatsby y Web API
04:13
- 20

Optimización de JavaScript para Producción Web
11:20 - 21

Análisis y Optimización de Bundles con Webpack
11:25 - 22

Optimización de Bundles en Proyectos Web con Webpack
17:14 - 23

Code Splitting con Webpack: Optimización de Bundles en Proyectos Web
06:31 - 24

Lazy Loading de Videos con JavaScript y Modales
21:44 - 25

Event Propagation y Filtrado de Eventos en JavaScript
17:24 - 26

Integración de Librerías en Proyectos JavaScript
14:58 - 27

Optimización de Carga de Modales con Lazy Loading en Webpack
13:25 - 28

Renderizado en Cliente vs. Servidor: Diferencias y Funciones
08:44 - 29

Implementación de Server Side Rendering en NodeJS
19:41 - 30

Optimización de Sitios con Static Site Generation
15:51
¿Cómo implementar Server-Side Rendering (SSR) en código?
Entender cómo llevar la carga de procesamiento desde el cliente al servidor no solo mejora el rendimiento, sino que también ofrece una mejor experiencia al usuario. Aquí veremos cómo aplicar Server-Side Rendering (SSR) en un proyecto de JavaScript y las diferencias en su implementación.
Preparación del entorno
Para empezar, es crucial tener un proyecto con la estructura adecuada y haber hecho una instalación básica utilizando npm. Este es el proceso inicial:
- Configuración del proyecto: Crea un nuevo branch de trabajo usando
git:git checkout -b home_advares_optimización_SR cinco_with_SR - Preparación de dependencias: Instala todas las dependencias necesarias:
npm install
Implementación de SSR
Cambios en la estructura del proyecto
El objetivo principal es mover la lógica de renderizado desde el cliente hacia el servidor. Aquí te explico paso a paso:
-
Reestructuración de carpetas:
- Mueve la lógica de renderización desde
source/carruselItemsa una nueva carpeta llamadaSSR/carruselItems.
- Mueve la lógica de renderización desde
-
Ajuste de módulos:
- Transforma la lógica de los módulos de ECMAScript 6 (usando
importyexport) a CommonJS para su compatibilidad con Node.js, donde se usaránrequireymodule.exports.
- Transforma la lógica de los módulos de ECMAScript 6 (usando
Implementación y cambios en los archivos
-
Archivo render.js:
- Este archivo se encarga de conectar con la API, obtener datos y generar un string de HTML usando una herramienta llamada Hyperscript:
const hyperscript = require('hyperscript'); const render = () => { // Implementa la obtención de datos y renderización return hyperscript('html', /* tu estructura HTML aquí */); } module.exports = render; -
Archivo index.js:
- Maneja la respuesta al cliente, dividiendo y ensamblando el contenido HTML:
const fs = require('fs'); const render = require('./render'); const contenidoHTML = async () => { const preContent = /* Lee y divide el HTML base */; const postContent = /* Define el contenido posterior */; const contenidoRenderizado = await render(); return `${preContent}${contenidoRenderizado}${postContent}`; } // Responde al navegador
Comparación de rendimiento: Lighthouse antes y después de SSR
Es importante evaluar el rendimiento usando herramientas como Lighthouse para determinar las mejoras. Antes de aplicar los cambios, tomamos un punto de medida inicial y luego volvemos a aplicar los cambios para ver la diferencia.
-
Antes de SSR:
- El contenido se genera en el lado del cliente.
- Utiliza
npm run buildynpm run startpara implementar y verificar la eficiencia en el navegador.
-
Después de SSR:
- Verifica los cambios y observa cómo ahora el HTML incluye elementos que antes eran generados por el cliente.
Ventajas y consideraciones del SSR
Implementar SSR implica mover la carga de conexión a la API del cliente al servidor. Algunas consideraciones son:
- Tiempo de conexión: La conexión a la API es la misma, pero ahora el servidor lo gestiona, ahorrando tiempo al cliente.
- Alojamiento y latencia: Si la API y el servidor están juntos, el tiempo ahorrado es mayor en comparación con conexiones desde un navegador.
Al final, el uso de SSR mejora notablemente el tiempo de carga y reduce la cantidad de JavaScript necesario en el cliente, mejorando el rendimiento y la experiencia del usuario. Continúa explorando y optimizando para encontrar el balance perfecto para tus proyectos.