Dati, SSR e prerendering
Un resolver Angular
name e chiama l'API locale. Questi sono i due file completi già presenti nel progetto.
import { inject } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import type { ResolveFn } from '@angular/router';
const greeting: ResolveFn<{ message: string }> = route => inject(HttpClient).get<{ message: string }>('/api/greet/' + encodeURIComponent(route.paramMap.get('name')!));
export default { title: 'Greeting · FastAng', resolve: { greeting } };import { Component, input } from '@angular/core';
@Component({ template: `<p class="eyebrow">SERVER RENDERED</p><h1>{{ greeting().message }}</h1><p>The Angular resolver calls a validated Fastify endpoint. Hydration reuses its response.</p>` })
export default class GreetingPage { readonly greeting = input.required<{ message: string }>(); }withComponentInputBinding(), quindi il dato risolto con la chiave greeting arriva all'input omonimo.
Cosa succede durante SSR
/api/... viene inoltrata a Fastify.inject() nella stessa applicazione, dopo gli interceptor. Non occorre avviare un secondo server o chiamare localhost dal renderer.
x-request-label della richiesta in entrata; il contesto è distinto per ogni rendering. La propagazione automatica di Set-Cookie e redirect dalle API all'HTML non è implementata.
Prerendering esplicito
fastang.config.ts con questo file per generare anche il saluto pubblico durante la build.
import { defineConfig } from '@fastang/core';
export default defineConfig({
prerender: ['/about', '/greet/world'],
vercel: { functions: 'routes' },
});/, /api e i percorsi di asset sono riservati; i percorsi di prerendering non accettano query string. Una risposta non HTTP 200 interrompe la build. Non elencare URL che dipendono da cookie o dati personali.
/greet/world è servita dall'HTML generato; /greet/Ada continua a usare SSR. In sviluppo entrambe usano SSR. Le risposte SSR sono private e non memorizzate in una cache HTML condivisa; non c'è ISR.