Habilitar Pre-rendering en Angular para Generación de Sitios Estáticos
Clase 26 de 36 • Curso de Angular Avanzado
Contenido del curso
- 7

Buenas prácticas con variables locales en Angular
09:14 - 8

Optimización de Imágenes en Angular con NG Optimizate Image
17:08 - 9

Optimización de Rutas Amigables para SEO en Angular
11:27 - 10

"Reactividad en Angular: Migración a Input Signals"
20:42 - 11

Migración de Inputs a Signals en Angular: Mejora de Rendimiento y Flujo
12:24 - 12

Migración de Outputs en Angular: De Decoradores a Funciones
07:35 - 13

Primitivas reactivas de Angular: Uso de Linked Signal y Computed
12:56 - 14

Sincronización de Componentes en Angular con Model y Signals
12:03 - 15

Interoperabilidad de RXJS y Signals en Angular
11:18 - 16

Conversión de Observables a Signals en Angular con toSignal
08:07 - 17

Interoperabilidad de RXDS y Signals en Angular: Uso de RX Resourcers
11:10 - 18

Manejo de Parámetros Reactivos con RX Resource en Angular
09:18 - 19

Manejo de Promesas y Fetch en Angular sin RXJS
07:59 - 20

Reactividad en Angular: Uso de Signals para Consultas DOM
09:00 - 21

Configuración de Prettier para HTML en Angular
05:28 quiz de Nuevas Funcionalidades en Angular
- 22

Server Side Rendering en Angular: Builders y Migración
10:17 - 23

Server Side Rendering con Angular: Mejora Rendimiento y SEO
13:26 - 24

Manejo de APIs del Navegador con Angular: Uso de AfterNextRender
09:43 - 25

Geolocalización y APIs: Creando un Mapa de Tiendas Cercanas
15:39 - 26

Habilitar Pre-rendering en Angular para Generación de Sitios Estáticos
11:26 - 27

Despliegue de Aplicaciones Node.js con App Fiber Hosting
18:12 quiz de Server-Side Rendering (SSR) y Navegación
- 28

Generación de Meta Tags Dinámicos con Angular y Open Graph
15:11 - 29

Creación de MetaTags Dinámicos en Angular
12:51 - 30

Proceso de Hydration y Event Replay en Angular
05:54 - 31

Implementación de Productos Relacionados en Angular eCommerce
09:26 - 32

Carga diferida de componentes en Angular para mejorar rendimiento
10:10 - 33

Optimización de Incremental Hydration en Angular
06:14 - 34

Configuración de Server Routing en Angular
10:43 - 35

Aplicaciones Sin Zone.js: Migración a Signals en Angular
13:02 - 36

Despliegue y Reactividad Avanzada en Angular
00:53
La renderización en Angular es un aspecto fundamental para optimizar el rendimiento y la experiencia de usuario en aplicaciones web modernas. Entender las diferentes estrategias de renderizado puede marcar una diferencia significativa en cómo los usuarios interactúan con tu aplicación y cómo los motores de búsqueda la indexan.
¿Qué es el pre-rendering o static site generation en Angular?
El pre-rendering, también conocido como static site generation, es una técnica de optimización que permite generar páginas HTML estáticas durante el proceso de compilación (build time), en lugar de renderizarlas en el servidor o en el cliente cuando se solicitan.
Esta estrategia funciona de manera diferente al server-side rendering (SSR):
-
Server-side rendering: Cada vez que un usuario accede a una URL (como
/abouto/product/:id), la solicitud va al servidor, este se conecta con las APIs necesarias, construye el HTML completo y lo devuelve al cliente. Este proceso ocurre en tiempo real para cada solicitud. -
Pre-rendering: Las páginas se generan durante el proceso de compilación (cuando ejecutas
ng build). Angular crea versiones estáticas de las páginas especificadas, como si tomara una "captura de pantalla" del contenido. Estas páginas no se generan dinámicamente cuando el usuario las solicita, sino que ya están pre-construidas.
Ventajas y limitaciones del pre-rendering
Ventajas:
- Rendimiento mejorado: Las páginas se cargan extremadamente rápido porque ya están generadas.
- Mejor SEO: Los motores de búsqueda pueden indexar fácilmente el contenido completo.
- Menor carga en el servidor: No es necesario generar contenido dinámicamente para cada solicitud.
Limitaciones:
- Contenido estático: La principal desventaja es que para actualizar el contenido pre-renderizado, necesitas ejecutar nuevamente el proceso de compilación (
ng build). - No es ideal para contenido dinámico: No es la mejor opción para páginas que cambian frecuentemente o que dependen de datos en tiempo real.
¿Cómo implementar el pre-rendering en Angular?
Angular facilita la implementación del pre-rendering a través de configuraciones en el archivo angular.json. Veamos cómo habilitarlo:
-
Verificar la configuración actual: Por defecto, la opción
preRenderestá establecida entrueen el archivoangular.json. -
Personalizar la estrategia de pre-rendering:
"prerender": { "discoverRoutes": false, "routes": ["routes.txt"] } -
Crear un archivo de rutas: Debes crear un archivo
routes.txtal mismo nivel queangular.jsondonde especificarás las rutas que deseas pre-renderizar:/about /product/1 -
Ejecutar el proceso de compilación:
ng build
Después de la compilación, Angular generará archivos HTML estáticos para cada ruta especificada en routes.txt. Estos archivos se almacenarán en la carpeta dist con una estructura que refleja las rutas (por ejemplo, /about/index.html).
Casos de uso recomendados
El pre-rendering es especialmente útil para:
- Páginas estáticas: Como la página "Acerca de" o "Términos y condiciones" que rara vez cambian.
- Blogs: Los artículos de blog, una vez publicados, generalmente permanecen sin cambios.
- Documentación: Páginas de documentación que no requieren actualizaciones frecuentes.
No es recomendable para:
- Páginas de productos con precios o inventario que cambian frecuentemente.
- Dashboards o interfaces que muestran datos en tiempo real.
- Contenido personalizado basado en el usuario.
¿Cómo desplegar una aplicación Angular con pre-rendering?
Cuando implementas pre-rendering o server-side rendering en Angular, el proceso de despliegue cambia significativamente:
- Ya no estás desplegando solo archivos estáticos (HTML, CSS y JavaScript).
- Necesitas un servidor que pueda ejecutar JavaScript, generalmente Node.js.
- El archivo principal para ejecutar la aplicación será el que se encuentra en la carpeta
dist(normalmenteserver.mjs).
Para probar localmente cómo funcionaría en producción, puedes usar:
node dist/your-app-name/server/server.mjs
Este comando inicia un servidor Express que ejecuta tu aplicación Angular con todas las estrategias de renderizado configuradas.
El entendimiento de estas diferentes estrategias de renderizado te permite optimizar tu aplicación Angular según las necesidades específicas de cada sección, mejorando tanto la experiencia del usuario como el posicionamiento en buscadores.
¿Has implementado alguna de estas estrategias en tus proyectos? Comparte tu experiencia en los comentarios y cuéntanos qué enfoque ha funcionado mejor para tus necesidades específicas.