Analog
On this page

Obtención de Datos del Lado del Servidor

Analog soporta la obtención de datos desde el servidor antes de cargar una página. Esto se puede lograr definiendo una función load asíncrona en el archivo .server.ts de la página.

Obtención de los Datos

Para obtener los datos desde el servidor, crea un archivo .server.ts que contenga la función asíncrona load junto al archivo .page.ts.

// src/app/pages/index.server.ts
};

Inyección de los Datos

Acceder a los datos obtenidos en el servidor se puede hacer utilizando la función injectLoad proporcionada por @analogjs/router.
La función load se resuelve utilizando resolutores de rutas de Angular, por lo que establecer requireSync: false y initialValue: {} no ofrece ninguna ventaja, ya que load se obtiene antes de que el componente sea instanciado.

// src/app/pages/index.page.ts
export const appConfig: ApplicationConfig = {
  providers: [
    provideFileRouter(
      withComponentInputBinding(),
      withNavigationErrorHandler(console.error),
    ),
    provideHttpClient(),
    provideClientHydration(),
  ],
};

Ahora, para obtener los datos en el componente, agrega una entrada llamada load.

// src/app/pages/index.page.ts
export const routeMeta: RouteMeta = {
  resolve: {
    data: async (route) => {
      // llamar al resolutor de carga del servidor para esta ruta desde otro resolutor
      const data = await getLoadResolver(route);

      return { ...data };
    },
  },
};

Sobrescribir la URL Base Pública

Analog infiere automáticamente la URL base pública que se debe establecer al usar la obtención de datos del lado del servidor a través de su Contexto de Solicitud del Servidor y Interceptor de Contexto de Solicitud. Para establecer explícitamente la URL base, configura una variable de entorno utilizando un archivo .env para definir la URL base pública.

// .env
VITE_ANALOG_PUBLIC_BASE_URL="http://localhost:5173"

La variable de entorno también debe estar configurada al construir para despliegue.