Habilitar Pre-rendering en Angular para Generación de Sitios Estáticos
Clase 26 de 36 • Curso de Angular Avanzado
Resumen
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
/about
o/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
preRender
está establecida entrue
en 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.txt
al mismo nivel queangular.json
donde 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.