Renderizado del lado del servidor con SSR Angular
Este tema tiene como objetivo describir qué es la representación del lado del servidor y cómo configurarla dentro de Ignite UI for Angular aplicación.
Angular Server-side rendering
Todas Angular aplicaciones se ejecutan en el navegador del cliente y, a menudo, esto puede resultar en un impacto negativo en el rendimiento de Largest Contentful Paint (LCP), es decir, cuando un navegador representa por primera vez el contenido más grande de una página. Aquí es cuando Angular SSR resulta útil, puede generar el HTML completo de una página en el servidor. Representa una página del lado del cliente a HTML en el servidor que luego se arranca en el cliente. Está bien, pero ¿cómo funciona?
LCP mide cuándo el contenido más grande de una página es visible para el usuario, mientras que para la métrica FCP, mide cuánto tiempo tarda el navegador en renderizar la primera pieza de contenido DOM después de que un usuario navega a su página. Consulte Puntuación de rendimiento de Lighthouse para obtener más información.
How it works?
Con Angular SSR, servirá una versión estática de la página de destino de sus aplicaciones, mientras que al mismo tiempo se carga toda la aplicación Angular en segundo plano. La página de destino será HTML puro y se mostrará incluso si el JavaScript está deshabilitado. Puedes encontrar más información sobre Server Rendering aquí.
Usage
La renderización del lado del servidor es una de las muchas técnicas que forman parte de las pautas de renderización en la web, que pueden:
- Facilite a los rastreadores web la indexación de su sitio web en los puestos más altos de las búsquedas; mejorará su optimización de motores de búsqueda (SEO).
- Muestre la primera página rápidamente: la carga lenta de la página inicial no resulta atractiva para los usuarios (si tarda más de 3 segundos en cargarse).
- Mejore el rendimiento de su aplicación: tendrá un impacto positivo tanto en First Contentful Paint como en Largest Contentful Paint.
Le brinda control total sobre SEO y vistas previas de redes sociales, y mejora el rendimiento general percibido de su aplicación al permitir a los usuarios ver una vista pintada inicial.
Add SSR to existing Ignite UI application
Step 1 - Add @angular/ssr
Usando el esquema Angular CLI podemos ejecutar el siguiente comando:
ng add @angular/ssr
llvm
Este esquema realizará varios cambios en las configuraciones del cliente y el servidor de la aplicación, además de agregar archivos adicionales a la estructura del proyecto.
Step 2 - Start your Angular SSR app
Ejecute el siguiente comando:
ng serve
ebnf
Build a new application from scratch
- Utilice
ng new
o el Ignite UI comando de la CLIig new
. Como alternativa, utilícelong new --ssr
para crear un nuevo proyecto SSR de Angular directamente, omitiendo el paso 3. - Ejecute
ng add igniteui-angular
que instala los paquetes npm de la biblioteca en su espacio de trabajo y configura el proyecto en el directorio de trabajo actual para usar esa biblioteca. - Agregue Angular SSR con
ng add @angular/ssr
. - Agregue Ignite UI for Angular componentes, por ejemplo, cuadrícula, calendario
Other considerations
- Si tu aplicación usa otros objetos específicos del navegador, incluye su uso en una declaración condicional, de modo que solo Angular los use en el navegador. Puedes hacerlo importando las funciones
isPlatformBrowser
eisPlatformServer
desde@angular/common
, inyectando el tokenPLATFORM_ID
en tu componente y ejecutando las funciones importadas para ver si estás en el servidor o en el navegador. - Si utiliza ElementRef para el manejo de elementos HTML, no utilice el elemento nativo para manipular los atributos del elemento. En su lugar, inyecte y utilice los métodos Renderer2.
- Todas las URL para solicitudes del servidor deben ser absolutas; tenga en cuenta que las solicitudes de datos de URL relativas fallarán cuando se ejecuten desde el servidor.
- Para controlar los eventos del navegador, el equipo de Angular proporciona la función withEventReplay(). Esta función permite capturar todos los eventos que ocurren antes de la hidratación y reproducir esos eventos una vez que se ha completado la hidratación.
- Si utiliza IgxIconService para registrar iconos, asegúrese de haber configurado provideHttpClient() en sus proveedores.
- Al usar Angular SSR, el servidor renderizará previamente las páginas que serán visibles para los usuarios, sin embargo, las interacciones serán limitadas. Una vez que la aplicación del lado del cliente se carga en segundo plano, cambiará sin problemas de mostrar las páginas renderizadas por el servidor a la aplicación del lado del cliente.
Useful resources
- Angular Guía SSR
- Terminología de renderizado del lado del servidor
- Primeros pasos con Ignite UI for Angular
- Guía de la interfaz de línea de comandos Ignite UI
- Ignite UI for Angular Esquemas